[英]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.