簡體   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