2011-04-07 42 views
1

有沒有辦法使控件依賴於另一個控件?我有一個組合框和一個按鈕,當且僅當在組合框中選擇了一個項目時,我需要啓用該按鈕。Windows窗體中控件之間的綁定

我知道我可以在SelectedIndexChanged回調中設置Enabled屬性的按鈕,但是這樣會需要一些代碼,而且還會出現按鈕的初始狀態問題。所以我正在尋找一些不需要手動處理事件的東西,這可能嗎?

謝謝!

+1

WPF是你的答案,WinForms我不認爲這是可能的直接前進的方式。 – 2011-04-07 05:37:42

+0

不,一行代碼不能有效地被某種需要2或3個語句初始化的綁定所取代。無論如何,Winforms綁定並不那麼靈活。初始狀態絕不應該是一個問題,它始於你在設計器中留下的方式。 – 2011-04-07 05:42:05

+0

謝謝@Sanjeevakumar和@Hans!我想這回答了我的問題。 – 2011-04-07 05:44:59

回答

1

不,沒有辦法在winforms中沒有代碼就做這個。我最常做的是收集所有這些狀態設定代碼到一個具體方法:

private void SetControlStates() 
{ 
    theButton.Enabled = theComboBox.SelectedIndex >= 0; 
    // code for other controls follow here 
} 

然後,我觸發這個方法來自全國各地的地方,只要有可能導致狀態改變的交互(包括我在表單加載完成時做的最後一件事;它處理初始狀態)。如果你想避免不必要的任務,只需添加代碼來檢查值首先:

private void SetControlStates() 
{ 
    bool buttonEnabled = theComboBox.SelectedIndex >= 0; 
    if (theButton.Enabled != buttonEnabled) theButton.Enabled = buttonEnabled; 
    // code for other controls follow here 
} 
相關問題