我经常发现自己使用这种模式
private boolean cbDeviceIndexInternal = false;
private void cbDevices_SelectedIndexChanged(object sender, EventArgs e)
{
if (!cbDeviceIndexInternal)
DeviceChanged();
cbDeviceIndexInternal = false;
}
...
cbDeviceIndexInternal = true;
cbDevices.SelectedIndex = 0;
由于SelectedIndex
被更改,无论用户或类本身是否更改了索引,都会抛出事件。我真的很讨厌使用这个代码,但这是我找到的最好的解决方案。
有没有其他人遇到过这个,你是怎么解决的?
答案 0 :(得分:1)
您不一定要添加和删除处理程序。只是在Load
事件结束之前不要添加处理程序。这样,当您对控件进行编程更改时,它们不会出现并触发。