C# Combox SelectedIndexChanged在关闭WinForm时激发
我使用Combobox SelectedIndexChanged事件来执行一些任务。它工作得很好。但是当我关闭表单时,SelectedIndexChanged被激发,我得到“对象引用未设置为对象的实例。”异常。我的代码如下-C# Combox SelectedIndexChanged在关闭WinForm时激发,c#,C#,我使用Combobox SelectedIndexChanged事件来执行一些任务。它工作得很好。但是当我关闭表单时,SelectedIndexChanged被激发,我得到“对象引用未设置为对象的实例。”异常。我的代码如下- private void cmbProductName_SelectedIndexChanged(object sender, EventArgs e) { try { Product p =(Prod
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事件
谢谢
SKPaul.尝试在FormClosing事件处理程序中注销事件:
MyComboBox.SelectedIndexChanged-=combox\u SelectedIndexChanged 在“从关闭”过程中,可以删除组合框事件处理程序。因此,您需要关闭表单的事件处理程序,并且必须在那里删除
cmbProductName\u SelectedIndexChanged
回调
在这里,您可以阅读和。如果您只想在用户更改组合框中的选定项时执行任务,最好实现该事件 [编辑] 根据MSDN文档
SelectionChangeCommitted
仅当组合框
选择由用户更改(通过键盘或鼠标)时才会发生,并且当选择以编程方式更改时不会引发
更改列表中的值时,首先触发SelectionChangeCommitted
事件,然后触发SelectedIndexChanged
事件
因此,如果我们需要对SelectedIndexChanged
执行任何操作,我们可以将其删除,并在SelectionChangeCommitted
事件处理程序中执行相同的操作
只需处理此事件,而不是SelectedIndexChanged
,如下所示:
private void cmbProductName_SelectionChangeCommitted(object sender, EventArgs e)
{
/*
Your event handling code
*/
}
在表单关闭事件中,您的设置是否与cmbProductName相关?或者焦点可能会出现在Combo中。触发Combobox SelectedIndexChanged在关闭时不是正常行为,请确保在关闭时不调用它closing@Akerm-我哪儿也不叫它,这是个好主意。但我从未使用过这个事件。我必须研究它。但如果你能举个小例子,我将不胜感激。谢谢哈利法。我怎样才能让你满意?十分之十??哈哈。我要更改我的代码。再次感谢。SelectionChangeCommitted会造成问题。