1

我在将表单属性绑定到数据源时遇到问题。此处给出了解决方案(请参阅):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 方法制作简单的学生信息。我被困在如何绑定单选按钮上,但我发现我可以使用表单的属性来实现它。绑定到任何其他控件(例如文本框和组合框)相当容易。就我而言,我想绑定一个表单属性

4

1 回答 1

3

所以经过半天,我终于想出了如何解决这个问题。

实际上,我已经在 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 = 男性单选框和 RadioButton2 = 女性(最好遵循良好的命名约定!)。

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

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

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

在此处输入图像描述

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

编辑: 我用来弄清楚的缺失的关键术语只是“数据绑定单选按钮”。这就是为什么我想更改这个问题的标题以使其更加明确。

于 2013-05-16T15:41:40.693 回答