1
有没有办法使控件依赖于另一个控件?我有一个组合框和一个按钮,当且仅当在组合框中选择了一个项目时,我需要启用该按钮。Windows窗体中控件之间的绑定
我知道我可以在SelectedIndexChanged
回调中设置Enabled
属性的按钮,但是这样会需要一些代码,而且还会出现按钮的初始状态问题。所以我正在寻找一些不需要手动处理事件的东西,这可能吗?
谢谢!
有没有办法使控件依赖于另一个控件?我有一个组合框和一个按钮,当且仅当在组合框中选择了一个项目时,我需要启用该按钮。Windows窗体中控件之间的绑定
我知道我可以在SelectedIndexChanged
回调中设置Enabled
属性的按钮,但是这样会需要一些代码,而且还会出现按钮的初始状态问题。所以我正在寻找一些不需要手动处理事件的东西,这可能吗?
谢谢!
不,没有办法在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
}
WPF是你的答案,WinForms我不认为这是可能的直接前进的方式。 – 2011-04-07 05:37:42
不,一行代码不能有效地被某种需要2或3个语句初始化的绑定所取代。无论如何,Winforms绑定并不那么灵活。初始状态绝不应该是一个问题,它始于你在设计器中留下的方式。 – 2011-04-07 05:42:05
谢谢@Sanjeevakumar和@Hans!我想这回答了我的问题。 – 2011-04-07 05:44:59