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

时间:2008-09-25 00:16:19

标签: c# .net winforms

我有一个表单,我有两个单选按钮和两个可互换的控件(由ListView和一些按钮组成)。根据选择的单选按钮,我想向用户显示正确的控件。

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

这似乎运作得很好,但我很好奇是否有更好或更常见的做法?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

嗯,你也可以使用数据绑定......对我来说似乎有点优雅。假设您有两个单选按钮“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会破坏功能,我应该在网上阅读为什么..

LATER EDIT:

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