private void newThumbNail(int docType, string fileName)
{
thmbNail[thmbNailCnt] = new GroupBox();
thmbNail[thmbNailCnt].Parent = panel1;
thmbNail[thmbNailCnt].Visible = true;
thmbNail[thmbNailCnt].Location = new Point(2, 5 + ((thmbNailCnt * 50) + 2));
thmbNail[thmbNailCnt].Size = new Size(222, 50);
picBox[thmbNailCnt] = new PictureBox();
picBox[thmbNailCnt].Parent = thmbNail[thmbNailCnt];
picBox[thmbNailCnt].Visible = true;
picBox[thmbNailCnt].Location = new Point(6, 13);
picBox[thmbNailCnt].Size = new Size(31, 31);
switch (docType)
{
case 1: picBox[thmbNailCnt].Image = wordImg;
break;
case 2: picBox[thmbNailCnt].Image = pptImg;
break;
case 3: picBox[thmbNailCnt].Image = excelImg;
break;
case 4: picBox[thmbNailCnt].Image = pdfImg;
break;
}
texBox[thmbNailCnt] = new TextBox();
texBox[thmbNailCnt].Parent = thmbNail[thmbNailCnt];
texBox[thmbNailCnt].Visible = true;
texBox[thmbNailCnt].Location = new Point(53, 24);
texBox[thmbNailCnt].Size = new Size(163, 20);
texBox[thmbNailCnt].Text = fileName;
texBox[thmbNailCnt].Enabled = false;
texBox[thmbNailCnt].BackColor = Color.Silver;
texBox[thmbNailCnt].ForeColor = Color.Black;
texBox[thmbNailCnt].DoubleClick += new System.EventHandler(changeText);
thmbNailFN[thmbNailCnt] = fileName;
data[thmbNailCnt, 0] = fileName;
data[thmbNailCnt, 1] = docType.ToString();
thmbNail[thmbNailCnt].Controls.Add(picBox[thmbNailCnt]);
thmbNail[thmbNailCnt].Controls.Add(texBox[thmbNailCnt]);
thmbNailCnt++;
}
private void changeText(object sender, EventArgs e)
{
this.Enabled = true;
}
private void newThumbNail,添加一个带有图片框和文本框的组框作为其元素。我为文本框自定义了双击事件,遗憾的是它没有执行。为什么会这样?
答案 0 :(得分:1)
您的活动不会触发,因为TextBox已被禁用。但是我认为解决方案可能是对界面的重新设计,因为双击时启用控件不是预期的行为。禁用控件的关键是防止用户与其进行交互。
或许将其设置为只读可能是更好的选择?这样它仍会触发事件。
答案 1 :(得分:1)
如果未启用,则不会在TextBox上触发该事件。所以,它不起作用,因为你这样做:
texBox[thmbNailCnt].Enabled = false;
我认为您打算在双击处理程序中执行以下操作(而不是使用this
)
(sender as TextBox).Enabled = true;
您必须尝试双击启用文本框?
如果是这样,那么您就无法使用Enabled属性,因为在禁用文本框时不会触发点击事件。
相反,您可以使用ReadOnly
属性来阻止用户对文本进行任何更改:
texBox[thmbNailCnt].ReadOnly = true;
和
private void changeText(object sender, EventArgs e)
{
(sender as TextBox).ReadOnly = false;
}
这不会使它在禁用时具有暗淡的外观。如果你愿意的话,你可以做一些改变,让它看起来一样。