C# 关闭表单时,对象引用未设置为对象异常的实例
当我想关闭我的表单时,会调用C# 关闭表单时,对象引用未设置为对象异常的实例,c#,visual-studio-2010,nullreferenceexception,C#,Visual Studio 2010,Nullreferenceexception,当我想关闭我的表单时,会调用cmprospecten\u SelectedIndexChanged方法。但是CMBEROSPECTEN中的值为null,因此我得到 NullReferenceException:对象引用未设置为 反对 你知道我怎样才能解决这个问题吗? 我在以下行收到错误消息:“如果(setInMail(Convert.ToInt32(dr[0]),Convert.ToInt32(cmprospecten.SelectedValue.ToString())==true) priva
cmprospecten\u SelectedIndexChanged
方法。但是CMBEROSPECTEN中的值为null,因此我得到
NullReferenceException:对象引用未设置为
反对
你知道我怎样才能解决这个问题吗?
我在以下行收到错误消息:“如果(setInMail(Convert.ToInt32(dr[0]),Convert.ToInt32(cmprospecten.SelectedValue.ToString())==true)
private void cmbProspecten\u SelectedIndexChanged(对象发送方,事件参数e)
{
lstonvangen.Items.Clear();
OleDbConnection con=新的OleDbConnection(connstring);
string query=“选择Ontwikkeldossier.ontwikkeldosserid[E-mailcampagne]。来自[E-mailcampagne]的CampagneID,Ontwikkeldossier其中([Ontwikkeldossier].[Startdatum]>=[E-mailcampagne].[StartdatumOpl]和[Ontwikkeldossier].[Startdatum]这实际上是一个很常见的问题。您发现在关闭表单时引发了一些UI事件,这会导致问题,因为在处理程序运行之前,已经部分处理或清理了一些内容
有时,您可以通过引入布尔值isDisposing
字段并在Dispose()
方法的开头将其设置为true
来解决此问题
然后在处理程序中,如果isDisposing
为true,则在处理程序开始时提前返回
或者,您可以添加一个布尔值isClosing
字段并覆盖,并在覆盖内将isClosing
设置为true
然后,如果isClosing
为真,您可以从失败的处理程序中提前返回。在表单上添加cmbProspecten.SelectedIndex=-1
并像这样添加selectedindexchanged事件
private void cmbProspecten_SelectedIndexChanged(object sender, EventArgs e)
{
if cmbProspecten.selectedindex=-1 {return ;}
lstOntvangen.Items.Clear();
“提前返回”是什么意思?@CharlotteVancraeynest我的意思是在方法的开头放上以下内容:if(isClosing)return;
很抱歉,我真的不懂。我是一名it专业的学生,我只懂编程的基本知识。@charlottevancraey你的意思是你不懂什么如果(正在丢失)return;
表示方法内部?没关系,@matzone的答案有效。无论如何,感谢您抽出时间来帮助我!谢谢您的答案!!
private void cmbProspecten_SelectedIndexChanged(object sender, EventArgs e)
{
if cmbProspecten.selectedindex=-1 {return ;}
lstOntvangen.Items.Clear();