【问题标题】:Public Custom Event on UserControlUserControl 上的公共自定义事件
【发布时间】:2013-02-21 08:41:04
【问题描述】:

我想要这个:

public partial class ucTest : UserControl  
{
...  
SomeEvent { MessageBox.Show("Inner Call") }
}


public partial class frmTest: Form
{
...  
SomeEvent += OuterEventInstance;
...
void OuterEventInstance(object sender, EventArgs e)
{ MessageBox.Show("Inner Call") }
... 
}

如何在包含此用户控件实例的表单中定义可用(且可扩展)的用户控件上的公共事件?

【问题讨论】:

  • “可扩展”是什么意思?
  • 我的意思是SomeEvent += OuterEventInstance; 这样我可以在用户控件内的按钮被点击时运行一些代码。
  • 您需要详细说明您的问题。我想你已经在my answer to your other question 上得到了答案。用户控件的MyClikc 事件可以像其他事件一样以容器形式访问。

标签: c# .net winforms events event-handling


【解决方案1】:

类似这样的:

public partial class ucTest : UserControl  
{
   public event  EventHandler SomeEvent;

   private void OnSomeEvent()
   {
        EventHandler handler = SomeEvent;
        if(handler != null)
             handler(this, EventArgs.Empty);
   } 

}


public partial class frmTest: Form
{
    public frmTest()
    {
        ucTest uc = new ucTest(); 
        uc.SomeEvent += OuterEventInstance;
    }

    //...

    void OuterEventInstance(object sender, EventArgs e)
    {
        MessageBox.Show("Inner Call")
        //...
    }
}

【讨论】:

  • @MahdiTahsildari “不起作用”是什么意思?在 StackOverflow 中“不起作用”不起作用! :-)
  • @MahdiTahsildari 您是否收到编译器错误?或者您没有在用户控件的事件中看到定义的事件?或者你会得到一个例外?请澄清。
  • @MahdiTahsildari 您是否在用户控件中引发事件时调用OnSomeEvent
  • 抱歉,没关系。我有两个非常相似的表格 :) 我是第一个编码并测试第二个。真可惜 :D 感谢@MD.Unicorn & HamletHakobyan
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
  • 2017-06-28
  • 1970-01-01
相关资源
最近更新 更多