SelectedIndexChange事件在这里引起了我的麻烦,因为我改变index了这个事件,我想避免它.
我仍然需要在手动更改索引时调用事件,而不是在代码中调用.因为当你在事件中改变索引时你可能会注意到它会再次触发它.
使用布尔值指定您在事件内部.
private bool _isRunning = false;
private void SelectedIndexChange(...)
{
if(_isRunning) return;
_isRunning = true;
// do your things
_isRunning = false;
}
Run Code Online (Sandbox Code Playgroud)
编辑.正如Scott Chamberlain所指出的,如果事件中有可能发生错误,那么使用finallystatement来始终重置flag.
private bool _isRunning = false;
private void SelectedIndexChange(...)
{
if(_isRunning) return;
_isRunning = true;
try
{
// do your things
}
finally
{
_isRunning = false;
}
}
Run Code Online (Sandbox Code Playgroud)