用户控件并从放置在用户控件中的控件引发事件

时间:2018-09-18 11:56:51

标签: c# events

所以我想知道以下代码有什么问题,特别是从理论上讲。

我有一个用户控件,其中添加了一个文本框。 当我在文本框中单击时,我希望在用户控件中引发“鼠标单击”事件。 在我看来,解决方案应该是: 在文本框中为鼠标单击事件创建事件处理程序。 在此事件处理程序中,为用户控件引发鼠标单击事件。

这就是我所拥有的:

    private void txtLog_MouseClick(object sender, MouseEventArgs e)
    {
        this.OnMouseClick(e);
    }

我尝试过,但是不起作用,为什么会这样?

P.S。我真的很想知道为什么这是错误的!正确的解决方案很好,但我实际上是在尝试了解我在哪里出错了。谢谢:-)

2 个答案:

答案 0 :(得分:0)

好吧,您只需在设计模式下单击文本框,然后在事件选项卡的属性窗口中添加click事件。或者,如果您想在运行时执行此操作,则可以这样做:

 textbox.Click += Txt_Click;

    private static void Txt_Click(object sender, EventArgs e)
    {
       // do your thing
    }

或更短:

textbox.Click += (s,e) =>
{
    //do your thing
};

答案 1 :(得分:0)

您应该执行这三个步骤

  • 为文本框声明MouseClick委派方法
  • 将方法分配给文本框
  • 将此委派添加到[在用户控件构造函数上]此(窗体)OnMouseClick事件

第1步:

    private void textBox1_MouseClick(object sender, MouseEventArgs e)
    {

    }

第二步:

this.textBox1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.textBox1_MouseClick);

第3步:

    public myUserControl()
    {
        InitializeComponent();

        this.MouseClick += new MouseEventHandler(textBox1_MouseClick);
    }