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