【问题标题】:Binding between controls in Windows FormsWindows 窗体中的控件之间的绑定
【发布时间】:2011-04-07 05:31:38
【问题描述】:

有没有办法让一个控件依赖于另一个控件?我有一个组合框和一个按钮,当且仅当在组合框中选择了一个项目时,我才需要启用该按钮。

我知道我可以在SelectedIndexChanged 回调中设置按钮的Enabled 属性,但是它需要一些代码,此外还有一个问题是按钮的初始状态。所以我正在寻找不需要手动处理事件的东西,这可能吗?

谢谢!

【问题讨论】:

  • WPF 是你的答案,WinForms 我认为这是不可能的。
  • 不,一行代码不能有效地替换为某种需要 2 或 3 个语句来初始化的绑定。无论如何,Winforms 绑定并不是那么灵活。初始状态永远不会成为问题,它会按照您在设计器中的方式启动。
  • 谢谢@Sanjeevakumar 和@Hans!我想这回答了我的问题。

标签: c# winforms binding


【解决方案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
}

【讨论】:

    猜你喜欢
    • 2016-04-22
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 2017-02-26
    • 2011-11-07
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多