2011-04-07 43 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 
} 
相关问题