我发现自己经常使用这种模式
private boolean cbDeviceIndexInternal = false;
private void cbDevices_SelectedIndexChanged(object sender, EventArgs e)
{
if (!cbDeviceIndexInternal)
DeviceChanged();
cbDeviceIndexInternal = false;
}
...
cbDeviceIndexInternal = true;
cbDevices.SelectedIndex = 0;
由于用户或类本身更改索引,因此SelectedIndex
被更改了事件。我真的很讨厌使用此代码,但这是我找到的最好的解决方案。
是否遇到过此事,您是如何解决的?
您不一定要添加和删除处理程序。只是不要在Load
事件结束之前添加处理程序。这样,他们就不会在进行控件时出现和触发。