【问题标题】:Checkbox control to enable other controls on form复选框控件以启用表单上的其他控件
【发布时间】:2012-07-05 09:28:42
【问题描述】:

我正在构建一个用于在我的应用程序中搜索数据库的表单,并且我只想将控件的输入添加为WHERE(如果已启用)。我发现最好的方法是在每组控件旁边设置一组复选框来启用它们。

现在,我可以将逻辑添加到每个复选框的CheckedChanged,但我有几种不同类型的控件——文本框、日期选择器、组合框。所以他们必须单独完成——导致相当多的样板代码。

private void ChartCheckBox_CheckedChanged(object sender, EventArgs e)
{
    ClassComboBox.Enabled = ChartCheckBox.Checked;
}

有更快的方法吗?

【问题讨论】:

  • +1 表示我用图片看到的第一个问题 - 使问题非常容易理解。
  • @MichaelRodrigues 整天回答问题会让您欣赏提出好问题的艺术。

标签: c# winforms


【解决方案1】:

我会使用composite control 来执行此操作 - 这正是您所需要的。

【讨论】:

  • 看起来不错,我可以将我的复选框钩在控件中,然后在主窗体中获取它们的属性。
  • 它真的很整洁 - 前面需要做更多的工作,但非常值得。
【解决方案2】:

如果特定字段中的文本长度 > 0,为什么不直接包含特定字段的 WHERE 子句?例如if (txtArtist.Text.Length > 0) { ...

这样您就可以摆脱复选框,表单将更加自我维护......

【讨论】:

  • 不仅仅是文本框。我有复选框、组合框、日期选择器。如果有人选中然后取消选中一个复选框,他们是想搜索 not 符合该描述的事物,还是根本不选中它?
  • 我会有一个“不是”复选框。我通常将这样的东西构造为 [Field] [Is |不是 |包含 |等] [价值]
猜你喜欢
  • 2021-10-29
  • 2017-02-22
  • 2014-12-20
  • 2018-09-26
  • 2012-01-22
  • 1970-01-01
  • 2019-10-23
  • 2011-03-10
  • 1970-01-01
相关资源
最近更新 更多