如何检测表单的任何控件的变化?

2024-06-20

如何检测 C# 中表单的任何控件的更改?

由于我在一个表单上有许多控件,并且如果表单中的任何控件值发生更改,我需要禁用按钮。我正在寻找一些内置函数/事件处理程序/属性,并且不想为此创建自定义函数。


不,我不知道任何时候都会触发任何事件any控制表单的变化。

我的建议是单独订阅每个事件(如果您的表单有太多控件,这实际上很难做到,那么您可能需要重新考虑您的 UI)。

如果你绝对must订阅对所有控件的更改,那么您可能需要考虑类似于以下内容的内容:

foreach (Control c in this.Controls)
{
    c.TextChanged += new EventHandler(c_ControlChanged);
}

void c_ControlChanged(object sender, EventArgs e)
{

}

请注意,如果您在运行时向表单动态添加和删除控件,则这不会特别有效。

另外,TextChanged对于某些控件类型(例如文本框),事件可能不是合适的事件 - 在这种情况下,您需要转换并测试控件类型以便能够订阅正确的事件,例如:

foreach (Control c in this.Controls)
{
    if (c is CheckBox)
    {
        ((CheckBox)c).CheckedChanged += c_ControlChanged;
    }
    else
    {
        c.TextChanged += new EventHandler(c_ControlChanged);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检测表单的任何控件的变化? 的相关文章

随机推荐