我正在使用Combobox SelectedIndexChanged事件来执行一些任务.它工作得很好.但是当我关闭表单时,SelectedIndexChanged被触发,我得到"对象引用未设置为对象的实例".例外.我的代码如下 -
private void cmbProductName_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
Product p =(Product) cmbProductName.SelectedItem;
RawItems = RawItem.GetEntityList(p.Id, ConnectionString);
}
catch (Exception ex)
{
CustomMessageBox.ShowSystemException(ex);
}
}
Run Code Online (Sandbox Code Playgroud)
如何避免在窗体关闭时触发SelectedIndexChanged事件?
谢谢SKPaul.
尝试在FormClosing事件处理程序中取消注册该事件:
MyComboBox.SelectedIndexChanged - = combox_SelectedIndexChanged;
如果只在用户更改组合框中的选定项目时才执行任务,则最好实施SelectionChangeCommitted事件
[编辑]
根据MSDN SelectionChangeCommitted,仅当ComboBox用户更改选择(通过键盘或鼠标)时,文档才会出现,而当选择以编程方式更改时,文档不会出现。
当列表中的值更改时,将SelectionChangeCommitted首先SelectedIndexChanged触发事件,然后触发事件。
因此,如果需要在上执行任何操作SelectedIndexChanged,则可以将其删除并在SelectionChangeCommitted事件处理程序中执行相同的工作。
只需处理此事件即可,而不是SelectedIndexChanged如下所示:
private void cmbProductName_SelectionChangeCommitted(object sender, EventArgs e)
{
/*
Your event handling code
*/
}
Run Code Online (Sandbox Code Playgroud)