2011-08-07 32 views
0

我有一個WinForms應用程序,其中包含的組合框(comboBoxMain)和其他一些控制。 comboBoxMain綁定到一個由5個對象組成的數組(包含多個屬性的數據類的實例),並用於選擇這5個對象中的哪個將在其他UI控件中顯示其屬性。一旦用戶在我的表單上的所有控件中選擇了所需的值,我就有一個按鈕將這些值複製到數據類的其他4個實例中。我的表單上的一些控件可能會影響其他控件的可見性,啓用/禁用狀態或選定值。例如,如果用戶要從其中一個組合框中選擇「已禁用」的值(我們稱之爲comboBoxStatus),則會導致其他三個控件被禁用,複選框被選中並且組框的標題被更改。的WinForms設計問題控制

  1. 用戶選擇的「禁用」在comboBoxStatus(一個值,其然後在其SelectionChangeCommitted()的事件處理程序代碼觸發修改該:我使用這一功能所遇到的問題可以通過以下方案來描述其他控件,如上所述)。

  2. 接着,用戶點擊該按鈕將當前選擇的值在所有的控件複製到其他4個數據對象。

  3. 最後,用戶選擇從comboBoxMain其它4個數據對象中的一個。

發生這種情況時,我有一個SelectionChangeCommitted()事件處理程序comboBoxMain是火災和着眼於comboBoxStatus中的SelectedValue。不幸的是,它看到了支持屬性的默認值,而不是之前複製到屬性的「Disabled」值。我在comboBoxMain_SelectionChangeCommitted()的末尾添加了一些代碼,用於檢查可能影響UI中其他內容的那些控件的值,並確保所有內容都得到適當更新。這顯然不會發生,因爲它沒有看到正確的值。如果我將該代碼移出事件處理程序,並在用戶界面綁定當前選定數據對象的數據後通過按鈕手動調用該代碼,那麼它就可以工作。我只能猜測發生這種情況是因爲綁定在comboBoxMain_SelectionChangeCommitted()退出後纔會更新?

我希望一切都有道理。我一直在玩這個小時,還沒有完全理解發生了什麼事情或者什麼是這個問題的最佳解決方案。如果您有任何想法,我會很高興聽到他們的聲音。謝謝閱讀!

+0

我發現很難從散文文本中獲得所有相關的零碎。你可能會添加任何相關的代碼到你的問題,並指出問題發生在哪裏? – stakx

回答

0

我能夠在SelectionChangeCommitted事件處理程序的代碼移動到SelectedIndexChanged事件處理程序來解決這個問題。