Radiobutton需要在数据绑定时单击两次

时间:2013-09-27 14:00:40

标签: c# winforms data-binding

我试图找出为什么我的radiobutton在我们添加一个非常简单的数据绑定后会有不同的行为。

考虑一个只有两个单选按钮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));

我错过了什么或做错了什么?

3 个答案:

答案 0 :(得分:0)

将你的radiobuttons放入Group box

答案 1 :(得分:0)

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

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

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

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

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

答案 2 :(得分:0)

在点击事件中:

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