Sha*_*aun 5 c# events winforms
我正在使用C#WinForm.它有十几个文本框,组合框和复选框.winform显示从数据库中检索的信息.表单上有一个禁用的保存按钮.我希望能够在更改任何文本框/组合框/复选框时启用它.
是否有一种简单的方法可以做到这一点,而无需为每个项目添加单独的事件处理程序?
这足以让你盯着看.您可能需要根据需要foreach为其他control类型添加额外的循环.好的方面是,每种Control类型只需要几行代码,而不是每个实例,使用这种方法.
private void addHandlers()
{
foreach (TextBox control in Controls.OfType<TextBox>())
{
control.TextChanged += new EventHandler(OnContentChanged);
}
foreach (ComboBox control in Controls.OfType<ComboBox>())
{
control.SelectedIndexChanged += new EventHandler(OnContentChanged);
}
foreach (CheckBox control in Controls.OfType<CheckBox>())
{
control.CheckedChanged += new EventHandler(OnContentChanged);
}
}
protected void OnContentChanged(object sender, EventArgs e)
{
if (ContentChanged != null)
ContentChanged(this, new EventArgs());
}
public event EventHandler ContentChanged;
Run Code Online (Sandbox Code Playgroud)
在修改addHandlers方法以支持所有控件并在将所有控件添加到表单后调用它之后,您可以简单地订阅ContentChanged事件,以便在表单上的某些内容发生更改时执行任何可能需要的操作(即启用/禁用保存按钮).