繁体   English   中英

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

[英]user control and raising events from controls placed in user control

因此,我想知道以下代码有什么问题,尤其是从理论上讲。

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

所以这就是我所拥有的:

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

我已经尝试过了,但是行不通,为什么呢?

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

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

 textbox.Click += Txt_Click;

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

甚至更短:

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

您应该执行以下三个步骤

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

第1步:

    private void textBox1_MouseClick(object sender, MouseEventArgs e)
    {

    }

第2步:

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

第三步:

    public myUserControl()
    {
        InitializeComponent();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM