清理这种模式的方法?使用私有bool标志来表示用户何时更改UI与更改UI时的UI?

时间:2016-06-14 13:45:13

标签: c# winforms user-controls

我经常发现自己使用这种模式

private boolean cbDeviceIndexInternal = false;
private void cbDevices_SelectedIndexChanged(object sender, EventArgs e)
{
    if (!cbDeviceIndexInternal)
        DeviceChanged();
    cbDeviceIndexInternal = false;
}
...
cbDeviceIndexInternal = true;
cbDevices.SelectedIndex = 0;

由于SelectedIndex被更改,无论用户或类本身是否更改了索引,都会抛出事件。我真的很讨厌使用这个代码,但这是我找到的最好的解决方案。

有没有其他人遇到过这个,你是怎么解决的?

1 个答案:

答案 0 :(得分:1)

您不一定要添加删除处理程序。只是在Load事件结束之前不要添加处理程序。这样,当您对控件进行编程更改时,它们不会出现并触发。