在winforms FormClosing事件中导致的ComboBox异常

时间:2010-02-22 09:02:53

标签: c# winforms

使用c#vs2008 winforms

我有一堆子winforms的应用程序。每次关闭表单时,我需要将每个表单上的组合框的当前选定值存储到全局应用程序变量,以便我可以跟踪它并以新的形式使用它。组合框在表单启动时通过一种方法填充,以将其数据源设置为项目的数组列表

我发现如果组合框填充了设计器中的项目,并且您尝试在结束事件中获取组合框值,我总是得到 NullReferenceException

但是如果comboBox在我的应用程序中有一个像我 DO 那样的数据源,并且我尝试在表单结束事件中获取组合框值,那么我会说95%的时间我不要获取NullReferenceException,但我确实得到了5%的时间。该比率甚至可以根据我运行应用程序的计算机而有所不同。例如,我有一台计算机,其中总是发生异常。

因此,我的问题是获取组合框值的最佳方法是什么,在表单关闭之前的最后一件事情而不会导致异常。我倾向于在表单关闭之前做最后一件事,而不是跟踪每个选定的索引更改事件。

任何建议表示赞赏。

2 个答案:

答案 0 :(得分:0)

我猜你是当前的实现,然后实际上是使用事件处理程序。我不确定你在哪里尝试获取代码中的值,无论是表单代码本身还是其他地方。

我可能会做的是以下内容:

protected override void OnClosing(CancelEventArgs e)
{
   // Save Value

   base.OnClosing(e);
}

答案 1 :(得分:0)

您是否使用组合框的SelectedValue属性来访问所选项目?这返回......

  

包含值的对象   指定的数据源的成员   ValueMember属性。   (MSDN)

如果您未指定ValueMember,则可能是问题所在。如果您只想访问组合框中显示的字符串值,请尝试使用SelectedText属性。