用户控件中的自定义事件
本文关键字:自定义 事件 控件 用户 | 更新日期: 2023-09-27 17:54:10
我的用户控件有一个私有绑定源:
private System.Windows.Forms.BindingSource _bsMyBindingSource;
绑定源对象支持List changed事件,这正是我想要捕获和使用的事件。
private void _bsMyBindingSource_ListChanged(object sender, ListChangedEventArgs e)
{
}
现在…因为_bsMyBindingSource是一个私有成员,我不想直接公开这个事件(如果可能的话?)
我希望我的用户控件有一个OnChange事件,它将在内部_bsMyBindingSource_ListChanged被调用时被调用。
如何做到这一点?
您只需要从_bsMyBindingSource_ListChanged
处理程序中引发您的自定义事件。
您可以将其保留为ListChangedEventHandler
:
public class MyUserControl : UserControl
{
public event ListChangedEventHandler OnChange;
private void _bsMyBindingSource_ListChanged(object sender, ListChangedEventArgs e)
{
// if no listeners, OnChange will be null, so need to check
if(this.OnChange != null)
{
this.OnChange(this, e);
}
}
}
或者自定义事件类型:
public class MyUserControl : UserControl
{
public event EventHandler OnChange;
private void _bsMyBindingSource_ListChanged(object sender, ListChangedEventArgs e)
{
// if no listeners, OnChange will be null, so need to check
if(this.OnChange != null)
{
this.OnChange(this, new EventArgs());
}
}
}
然后你的页面或其他东西可以听这个事件:
public class MyPage : Page
{
private MyUserControl myControl;
public void MyPage_Load()
{
myControl.OnChange += myControl_OnChange;
}
private void myControl_OnChange(object sender, ListChangedEventArgs e)
{
// ... do something
}
}