【问题标题】:Radiobutton requires clicking twice when databound数据绑定时单选按钮需要单击两次
【发布时间】:2013-09-27 14:00:39
【问题描述】:

我试图弄清楚为什么我的单选按钮在我向它们添加一个非常简单的数据绑定后会表现不同。

考虑一个只有两个单选按钮 X 和 Y 的超级简单表单。现在说我想保留它们,所以在表单设计器中,我为 X 和 Y 的 Checked 属性添加了一个新的设置键。 现在我运行程序。这两个复选框最初都没有被选中,所以我点击 X 并且它被选中。到目前为止,一切都很好。现在我单击 Y,并期望 X 再次变为未选中,Y 变为选中,但发生的情况是只有 X 未选中,而 Y 仍然如此。再次单击 Y,然后检查 Y。

绑定如下:

this.rbX.DataBindings.Add("Checked", global::rb.Properties.Settings.Default, "X", true, DataSourceUpdateMode.OnPropertyChanged));
this.rbY.DataBindings.Add("Checked", global::rb.Properties.Settings.Default, "Y", true, DataSourceUpdateMode.OnPropertyChanged));

我是否遗漏了什么或做错了什么?

【问题讨论】:

    标签: c# winforms data-binding


    【解决方案1】:

    将你的单选按钮放入Group box

    【讨论】:

    • 没什么区别,反正它们在同一个容器控件(表单)上。
    【解决方案2】:

    我知道这是旧的,但我遇到了这个问题并且没有看到令人满意的答案所以......我了解到在这种情况下需要“手动”处理设置,而不是绑定它们。

    我的解决方案是在“CheckedChanged”事件处理程序中添加一行代码,并在表单加载时应用设置。

        Properties.Settings.Default.radio_checked_setting = radio.Checked;
    

    和

    radio.Checked = Properties.Settings.Default.radio_checked_setting;
    

    对我来说似乎是一个错误,但我不知道它是否符合技术定义。与手动保存所有用户设置相比,仍然非常方便:)

    【讨论】:

      【解决方案3】:

      在点击事件中:

      private void RadioButtonClick(object sender, EventArgs e)
      {
          var rb = sender as RadioButton;
          if (rb != null && !rb.Checked)
          {
              rb.Checked = !rb.Checked;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-30
        • 1970-01-01
        • 2011-05-02
        • 2022-07-01
        相关资源
        最近更新 更多