【问题标题】:Radio Buttons And Databinding in vb.netvb.net 中的单选按钮和数据绑定
【发布时间】:2012-07-09 10:33:30
【问题描述】:

我有一个具有一些属性的对象,其中之一是CarpetColor。我在他们自己的容器中的表单上也有三个单选按钮(rbRedrbBluerbGreen)。我想使用数据绑定将对象的CarpetColor 设置为选中的任何按钮。

我知道如何做一个简单的绑定,其中一个控件的属性绑定到一个对象属性。我想不通的是如何将三个控件的结果绑定到一个属性。例如,如果用户点击“红色”,CarpetColor 的值应该是“红色”。同样,如果他选择“Green”,CarpetColor 的值应该变为“Green”。

【问题讨论】:

    标签: vb.net winforms data-binding


    【解决方案1】:

    在名为 CarpetColor 的表单上创建一个属性,如下所示:

    enum Color { Red, Blue, Green } 
    public Color CarpetColor
    { 
    get { return rbGreen.Checked ? Green : (rbRed.Checked ? Red : Blue); }
    set 
      {  
        if (value == Green)
            rbGreen.Checked = true;
        else
            if (value == Red)
               rbRed.Checked = true;
            else
               rbBlue.Checked = true;
       }
    }
    

    然后您可以简单地将表单上的 CarpetColor 属性绑定到数据源的 CarpetColor。

    我会让表单实现INotifyPropertyChanged Interface 并使用单选按钮事件引发PropertyChanged 事件

    protected void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
             PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
    
    rbGreen.CheckedChanged += (s, args) => OnPropertyChanged("CarpetColor");
    rbRed.CheckedChanged += (s, args) => OnPropertyChanged("CarpetColor");
    rbBlue.CheckedChanged += (s, args) => OnPropertyChanged("CarpetColor");
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多