基于单选按钮交换两个.NET控件的最佳方法

时间:2020-03-06 14:41:50  来源:igfitidea点击:

我有一个表单,其中有两个单选按钮和两个可互换控件(由ListView和几个按钮组成)。基于选择哪个单选按钮,我想向用户显示适当的控件。

我现在这样做的方式是同时加载两个控件并设置一个OnRadioButtonSelectionChanged()方法,该方法在表单加载时被调用(以设置初始状态),并且随时更改选择。此方法只是将每个控件上的visible属性设置为适当的值。

这似乎效果很好,但是我很好奇是否有更好或者更通用的方法?

解决方案

是的,这就是我的工作方式。我将两个单选按钮的CheckedChanged事件设置为指向单个事件处理程序,并放置以下代码以换出可见控件。

private void OnRadioButtonCheckedChanged(object sender, EventArgs e)
{
    Control1.Visible = RadioButton1.Checked;
    Control2.Visible = RadioButton2.Checked;
}

好吧,我们也可以使用数据绑定...对我来说似乎有点优雅。假设我们有两个单选按钮" rbA"和" rbB",以及两个文本框" txtA"和" txtB"。并且我们希望仅在选中rbA时使txtA可见,而仅在选中rbB时使txtB可见。你可以这样做:

private void Form1_Load(object sender, EventArgs e)
{
    txtA.DataBindings.Add("Visible", rbA, "Checked");
    txtB.DataBindings.Add("Visible", rbB, "Checked");
}

但是...我观察到使用UserControls代替TextBoxes会破坏功能,我应该在网上继续阅读为什么。

后期编辑:

数据绑定是双向的! :如果以编程方式(从其他位置)将txtA的可见性设置为false,则rbA将变为未选中状态。这就是数据绑定的美丽。