簡體   English   中英

WinForms FormClosing事件中導致的ComboBox異常

[英]ComboBox exception caused in winforms FormClosing event

使用C#vs2008 WinForms

我有一堆子Winform的應用程序。 每次關閉表單時,我都需要將每個表單上的組合框的當前選定值存儲到Global應用程序變量中,以便我可以跟蹤它並在新表單中使用它。 通過將其數據源設置為項目的ArrayList的方法在表單開始時填充組合框

我發現的是,如果組合框中填充了設計器中的項目,而您嘗試在表單關閉事件中獲取組合框值,則我總是會收到NullReferenceException

但是如果ComboBox有一個數據源,像我這樣在我的應用程序,我試圖讓表單關閉事件組合框的值,然后我會說的時候,我沒有得到的NullReferenceException 95%,但我得到它5%的時間。 該比率甚至可以根據運行該應用程序的計算機而有所不同。 例如,我有一台計算機,總是發生異常。

因此,我的問題是什么(最好)的方法來獲取組合框的值,即在關閉表單之前不引起異常的最后一件事。 我寧願在表單關閉之前做最后一件事,而不是在每次選擇索引更改事件時對其進行跟蹤。

任何建議表示贊賞。

我猜您是當前的實現,實際上是在使用事件處理程序。 我不確定您試圖在代碼中獲取值的位置,無論是表單代碼本身還是其他地方。

我可能會做以下事情:

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

   base.OnClosing(e);
}

您是否正在使用組合框的SelectedValue屬性來訪問所選項目? 返回...

包含ValueMember屬性指定的數據源成員值的對象。 (MSDN)

如果您尚未指定ValueMember ,則可能是問題所在。 如果只想訪問組合框中顯示的字符串值,請嘗試改用SelectedText屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM