我开发了一个自定义控件,其作用类似于组框,并在组标签上显示复选框。这个想法是,一旦取消选中复选框,组中的所有控件都将被禁用。
我需要公开Check changed事件,以便在需要时可以执行外部操作。我也暴露了检查状态的变化。
目前,当使用该控件时,如果组中的任何控件都松散焦点,它将更改检查状态。
当我处理check change事件时,我是否应该为任何外部处理程序重新启动事件?
定义的事件:
/// <summary>
/// Event to forward the change in checked flag
/// </summary>
public event EventHandler CheckedChanged;
/// <summary>
/// Event to forward the change in checked state of the checkbox
/// </summary>
public event EventHandler CheckStateChanged;
事件处理程序代码:
private void chkBox_CheckedChanged(object sender, EventArgs e)
{
// Disable the controls within the group
foreach( Control ctrl in this.Controls )
{
if( ctrl.Name != "chkBox" && ctrl.Name != "lblDisplay" )
{
ctrl.Enabled = this.chkBox.Checked;
}
}
// Now forward the Event from the checkbox
if (this.CheckedChanged != null)
{
this.CheckedChanged(sender, e);
}
}
private void chkBox_CheckStateChanged(object sender, EventArgs e)
{
// Forward the Event from the checkbox
if( this.CheckStateChanged != null )
{
this.CheckStateChanged( sender, e );
}
}
答案 0 :(得分:1)
你快到了。您只需要在外部类中使用事件处理程序注册您的事件。
CheckedChanged += ExternalChkBox_CheckChanged;
private void ExternalChkBox_CheckChanged(object sender, EventArgs e)
{
// External trigger
}