Я разработал пользовательский элемент управления, который действует как групповое поле с флажком над меткой группы. Идея заключается в том, что после снятия флажка все элементы управления в группе отключены.
Мне нужно выставить событие Проверить измененное, чтобы при необходимости могли выполняться внешние действия. Я также показал, что состояние проверки изменилось.
В настоящее время, когда используется элемент управления, он изменяет состояние проверки, когда какой-либо из элементов управления в группе теряет фокус.
Когда я обрабатываю событие проверки изменения, должен ли я повторно запустить событие для каких-либо внешних обработчиков?
![enter image description here](https://i.stack.imgur.com/tzptj.jpg)
![enter image description here](https://i.stack.imgur.com/NM8E1.jpg)
Определенные события:
/// <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 );
}
}