组合框VB.Net的双向数据绑定

组合框VB.Net的双向数据绑定,vb.net,object,datatables,combobox,Vb.net,Object,Datatables,Combobox,我试图得到双向组合框绑定工作。我有一个类作为组合框的源,我将组合框的选定项/值绑定到数据表,数据表通过绑定源绑定到数据网格视图。它工作,但不是我所期望的。我想实现两件事 一旦组合框中的选择发生更改,立即更新数据表网格视图(强制更新数据) 将绑定添加到年龄列 这是我的密码。正确的方法是什么。任何帮助都将不胜感激。谢谢 导入System.ComponentModel 导入System.Runtime.CompilerServices 公开课表格1 实现INotifyPropertyChanged 公

我试图得到双向组合框绑定工作。我有一个类作为组合框的源,我将组合框的选定项/值绑定到数据表,数据表通过绑定源绑定到数据网格视图。它工作,但不是我所期望的。我想实现两件事

  • 一旦组合框中的选择发生更改,立即更新数据表网格视图(强制更新数据)
  • 将绑定添加到年龄列
  • 这是我的密码。正确的方法是什么。任何帮助都将不胜感激。谢谢

    导入System.ComponentModel
    导入System.Runtime.CompilerServices
    公开课表格1
    实现INotifyPropertyChanged
    公共BS作为新的BindingSource
    公共联系人BL作为绑定列表(联系人)
    私有子表单1_Load(发送方作为对象,e作为事件参数)处理MyBase.Load
    将联系人暗显为来自的新联系人列表{
    具有{.FirstName=“Name1”、.LastName=“LName1”、.Age=50}的新联系人(),
    具有{.FirstName=“Name2”、.LastName=“LName2”、.Age=39}的新联系人(),
    具有{.FirstName=“Name3”、.LastName=“LName3”、.Age=30}的新联系人(),
    具有{.FirstName=“Name4”、.LastName=“LName4”、.Age=66}的新联系人()
    ContactBL=新绑定列表(联系人)(联系人)
    ComboBox1.DataSource=ContactBL
    ComboBox1.DisplayMember=“FirstName”
    ComboBox1.ValueMember=“LastName”
    Dim表作为新数据表(“表1”)
    table.Columns.Add(“FirstName”,GetType(String))
    table.Columns.Add(“LastName”,GetType(String))
    table.Columns.Add(“年龄”,GetType(整数))
    表.行.添加(“名称3”,“LName3”,30)
    表.行.添加(“名称2”,“名称2”,39)
    BS.DataSource=表
    DataGridView1.DataSource=BS
    ComboBox1.DataBindings.Add(“SelectedValue”,BS,“LastName”,True,DataSourceUpdateMode.OnPropertyChanged)
    ComboBox1.DataBindings.Add(“Text”,BS,“FirstName”,True,DataSourceUpdateMode.OnPropertyChanged)
    DataGridView2.DataSource=ContactBL
    端接头
    私有子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击
    尺寸nr=C类型(ComboBox1.SelectedItem,联系人)
    Dim NewRow=DirectCast(BS.AddNew(),DataRowView)
    NewRow(“FirstName”)=nr.FirstName
    NewRow(“LastName”)=nr.LastName
    纽罗(“年龄”)=平均年龄
    BS.EndEdit()
    端接头
    Private\u FirstName作为字符串
    公共属性FirstName()作为字符串
    得到
    Return\u FirstName
    结束
    设置(ByVal值作为字符串)
    _FirstName=value
    OnPropertyChanged()
    端集
    端属性
    Private\u LastName作为字符串
    公共属性LastName()作为字符串
    得到
    Return\u LastName
    结束
    设置(ByVal值作为字符串)
    _LastName=value
    OnPropertyChanged()
    端集
    端属性
    Private _Age为整数
    公共属性Age()为整数
    得到
    回归年龄
    结束
    设置(ByVal值为整数)
    _年龄=价值
    OnPropertyChanged()
    端集
    端属性
    公共事件PropertyChanged为PropertyChangedEventHandler实现INotifyPropertyChanged.PropertyChanged
    受保护的可重写子OnPropertyChanged(
    可选成员名称(字符串=无)
    RaiseEvent PropertyChanged(Me,新PropertyChangedEventArgs(memberName))
    端接头
    子BindingComplete(ByVal发送方作为对象,ByVal e作为BindingCompleteEventArgs)
    如果e.BindingCompleteContext=BindingCompleteContext.DataSourceUpdate且e.Exception为Nothing,则e.Binding.BindingManagerBase.EndCurrentEdit()为空
    端接头
    末级
    公共类联系人
    实现INotifyPropertyChanged
    Private\u firstName作为字符串
    Private\u lastName作为字符串
    Private _Age为整数
    公共属性ContactId()为整数
    公共属性FirstName()作为字符串
    得到
    Return\u firstName
    结束
    设置
    _firstName=Value
    OnPropertyChanged()
    端集
    端属性
    公共属性LastName()作为字符串
    得到
    Return\u lastName
    结束
    设置
    _lastName=Value
    OnPropertyChanged()
    端集
    端属性
    公共属性Age()为整数
    得到
    回归年龄
    结束
    设置
    _年龄=价值
    OnPropertyChanged()
    端集
    端属性
    作为字符串的公共只读属性FullName()
    得到
    返回$“{FirstName}{LastName}”
    结束
    端属性
    公共事件PropertyChanged为PropertyChangedEventHandler实现INotifyPropertyChanged.PropertyChanged
    受保护的可重写子OnPropertyChanged(
    可选成员名称(字符串=无)
    RaiseEvent PropertyChanged(Me,新PropertyChangedEventArgs(memberName))
    端接头
    末级
    
    谢谢