单选按钮在数据绑定时需要单击两次



我试图弄清楚为什么我的单选按钮在我添加非常简单的数据绑定后会有所不同。

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

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

将您的单选按钮放入"组"框中

我知道

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

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

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

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

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

div class="one_answers">

在点击事件中:

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

最新更新