繁体   English   中英

如何在VB.net和C#中绑定单选按钮?

[英]How to bind radio button in VB.net and C#?

我对将表单属性绑定到数据源有问题。 解决方案在这里给出(请参阅): vb.net中的单选按钮和数据绑定

问题是,我不知道如何遵循以下指示:“ ...然后,您可以将表单上的CarpetColor属性简单地绑定到数据源的CarpetColor。” 你能告诉我怎么做吗?

另外,由于某种原因,我无法使用“ INotifyPropertyChanged”界面(智能感知无法检测到)。 我必须导入任何名称空间吗?

编辑:

enum Gender { Male,Female }
        public Gender _Gender
        {
            get { 
                if(radMale.Checked == true)
                    return Gender.Male;
               else
                    return Gender.Female;
            }
            set
            {
                if (value == Gender.Male)
                    radMale.Checked = true;
                else
                    radFemale.Checked = true;
            }
        }

这是我的代码的一部分。 就我而言,我正在尝试使用CRUD方法制作一个简单的学生信息。 我对如何绑定单选按钮感到困惑,但发现可以使用表单的属性来实现它。 绑定到任何其他控件(例如文本框和组合框)非常容易。 就我而言,我想绑定一个form属性

因此,经过很长一段时间,我终于想出了解决问题的方法。

实际上,我已经在VB.net中完成了编码,因为我更熟悉VB语法而不是C#。 但是,由于它们之间受.NET框架的限制,因此逻辑彼此非常相似。

form属性如下(尽管原始帖子中的枚举也是可能的。):

Public Property propGender() As String
    Get
        If RadioButton1.Checked = True Then
            Return "M"
        Else
            Return "F"
        End If
    End Get
    Set(ByVal value As String)
        _Sex = value
        If _Sex = "M" Then
            RadioButton1.Checked = True
        Else
            RadioButton2.Checked = True
        End If
    End Set
End Property

这是微不足道的,但我仅包含该代码段以作进一步说明。

关于如何对表单属性进行数据绑定的答案很简单:

Dim genderBinder = New Binding("propGender", Tbl_Stud_InfoBindingSource, "Gender")
Me.DataBindings.Add(genderBinder)
Me.DataBindings.Add(genderBinder)

Gender是我需要的数据成员。 我很困惑使用单选按钮调整表单属性(即使到现在也是如此)。 通过实现INotifyPropertyChanged接口解决了此问题。 我以前认为这隐式包含在每个项目中,但是很容易发现应该首先导入System.ComponentModel 感谢MSDN

Imports System.ComponentModel

可以通过以下方法来引发protertyChanged事件:

Protected Sub OnPropertyChanged(ByVal name As String)
    RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(name))
End Sub

Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
    OnPropertyChanged("propGender")
End Sub

Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
    OnPropertyChanged("propGender")
End Sub

其中RadioButton1 =男性的radiobox,RadioButton2 =女性(最好遵循良好的命名约定!)。

我不太熟悉C#语法,但是认为提高checkChanged属性的等效代码是:

RadioButton1.CheckedChanged += (s, args) => OnPropertyChanged("propGender");
RadioButton2.CheckedChanged += (s, args) => OnPropertyChanged("propGender");

最后,通过这种方式,我现在可以轻松地绑定单选按钮-我知道可以很容易地解决此问题,但这是像我这样的初学者常见的问题。 在VB6中,可以通过使用流行的记录集轻松实现这一点。 在.NET中,解决方案并不明显。

在此处输入图片说明

编辑:我在SO中看到了与同一场景有关的其他一些问题。 我发现了两个,但是它们都使用C#,这对于VB用户可能是模糊的。

编辑:我曾经想出的缺少的关键术语就是“数据绑定单选按钮”。 这就是为什么我想更改此问题的标题以使其更加明确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM