我正在使用 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);
}
}
如何避免在表单关闭时触发 SelectedIndexChanged 事件?
谢谢
SK保罗.
如果您只想在用户更改组合框中选定的项目时执行任务,最好实现SelectionChangeCommitted http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectionchangecommitted.aspx event
[EDIT]
根据 MSDN 文档SelectionChangeCommitted
仅当发生ComboBox
选择由用户更改(通过键盘或鼠标),并且当选择以编程方式更改时不会引发该错误。
当列表中的值发生更改时,SelectionChangeCommitted
事件首先被触发,然后SelectedIndexChanged
事件被触发。
所以如果我们需要做任何事情SelectedIndexChanged
,我们可以将其删除并在中执行相同的工作SelectionChangeCommitted
事件处理程序。
只需处理此事件而不是SelectedIndexChanged
如下:
private void cmbProductName_SelectionChangeCommitted(object sender, EventArgs e)
{
/*
Your event handling code
*/
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)