自定义用户控件c#上的MouseHover事件

时间:2017-04-25 09:47:10

标签: c# events user-controls

我创建了一个名为ucTextBox的usercontrol文本框,其中包含一个标签,一个文本框和两个按钮。我把它放在我的表格中。

现在,我想在表单中的每个ucTextBoxTextBoxMaskedTextBox上附加一个MouseHover事件。

我这样做:

public void AttachHoverEvent(Control CTrl)
        {
            foreach (Control c in CTrl.Controls)
            {
                if (c is TextBox || c is MaskedTextBox)
                {
                    c.MouseHover += new EventHandler(afficheDictionnaireChamp);
                    c.MouseLeave += new EventHandler(desafficheDictionnaireChamp);
                    continue;
                }
                if (c is ucTextBox)
                {
                    c.MouseHover += new EventHandler(afficheDictionnaireChamp);
                    c.MouseLeave += new EventHandler(desafficheDictionnaireChamp);
                    continue;
                }
                if (c.HasChildren)
                {
                    AttachHoverEvent(c);
                }
            }
        }

注意:我将ucTextBox置于其他条件下以设置断点并且条件为真。

我的代码适用于TextBoxMaskedTextBox但不适用于我的代码 ucTextBox(没有任何事情发生)。

我尝试在我的ucTextBox课程中添加此内容:

private void txbValeur_MouseHover(object sender, EventArgs e)
{
    if (this.MouseHover != null)
         this.MouseHover(this, e);
}

这是我的目标事件功能:

public void afficheDictionnaireChamp(object sender, EventArgs e)
        {
            Dictionnaire dico = new Dictionnaire();
            Control snd = (Control)sender;
            string table = dico.getNomTable(this.Name, snd.Name);
            string champ = dico.getNomChamp(this.Name, snd.Name);
            if (table != "" && champ != "")
                Globals.FormMain.tslTable.Text = table + " - " + champ;
            else
                Globals.FormMain.tslTable.Text = "";
        }

        public void desafficheDictionnaireChamp(object sender, EventArgs e)
        {
            Globals.FormMain.tslTable.Text = "";
        }

如果有人知道问题可以从哪里来?

提前致谢!

托马斯

1 个答案:

答案 0 :(得分:0)

尝试将您的父控件背景设置为"透明"