继承KryptonToolkit ListBox控件获取SelectedItemChanging事件。
public class CPListBox : KryptonListBox
{
public event CancelEventHandler SelectedIndexChanging;
protected virtual void OnSelectedIndexChanging(CancelEventArgs e)
{
SelectedIndexChanging(this, e);
}
protected override void OnSelectedIndexChanged(EventArgs e)
{
CancelEventArgs cArgs = new CancelEventArgs();
OnSelectedIndexChanged(cArgs);
if(!cArgs.Cancel)
{
base.OnSelectedIndexChanged(e);
}
}
}
在表单中我用代码处理事件:
void UsersListBoxSelectedIndexChanging(object sender, CancelEventArgs e)
{
if(_presenter.CurrentUser.IsModified)
{
MessageBox.Show("Nie zapisales zmian!");
e.Cancel = true;
}
}
我得到了 stackOverflow ;) 异常。也许有人现在这段代码出了什么问题?
最佳答案
您将永远递归地调用方法本身。这些递归调用没有终止条件。这会导致 Stack Overflow。
protected override void OnSelectedIndexChanged(EventArgs e)
{
CancelEventArgs cArgs = new CancelEventArgs();
OnSelectedIndexChanged(cArgs); // Clearly calling yourself indefinitely.
//...
}
关于c#、列表框、stackOverflow 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1832120/