代码之家  ›  专栏  ›  技术社区  ›  Redwood

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

  •  0
  • Redwood  · 技术社区  · 17 年前

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

    我现在这样做的方法只是加载两个控件并设置一个onRadioButtonSelectionChanged()方法,该方法在窗体加载(设置初始状态)时调用,并且在任何时候更改选择。此方法只是将每个控件的Visible属性设置为适当的值。

    这似乎很有效,但我很好奇是否有更好或更常见的方法来做呢?

    2 回复  |  直到 17 年前
        1
  •  3
  •   Lloyd Cotten    17 年前

    是的,我就是这么做的。我会将两个单选按钮的checkedChanged事件设置为指向单个事件处理程序,并放置以下代码以交换可见控件。

    private void OnRadioButtonCheckedChanged(object sender, EventArgs e)
    {
        Control1.Visible = RadioButton1.Checked;
        Control2.Visible = RadioButton2.Checked;
    }
    
        2
  •  2
  •   Andrei Rînea    17 年前

    你也可以使用数据绑定…在我看来有点优雅。假设您有两个单选按钮“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");
    }
    

    然而。。。我注意到使用用户控件而不是文本框会破坏功能,我应该在网上阅读为什么……

    后期编辑:

    数据绑定有两种工作方式!:如果(从其他地方)编程设置txta的可见性为false,则RBA将不选中。这就是数据绑定的好处。