DOBON.NETプログラミング道掲示板

■34016 / 親階層)  フォームコントロールへのDataBindingsでプロパティが相互反映されない
□投稿者/ やむ 一般人(1回)-(2018/11/05(Mon) 13:38:52)
  • アイコン環境/言語:[Win10 VB.NET .NET Framework4.6.1] 
    分類:[.NET] 

    お世話になっております。
    
    DataBindingsで自作クラスのプロパティとフォームのコントロールを紐づけ、
    PropertyChangedでプロパティの変更を拾い、処理を行おうとしています。
    customer_code テキストボックス の値の変更を拾い、customer_name テキストボックスに
    値をセットすることはできるのですが、桁を補完した customer_code がテキストボックスに反映されません。
    原因と対処法をお教えください。
    よろしくお願いいたします。
    
    以下、ソース(一部抜粋)
    
    Public Class ModelBase
        Implements INotifyPropertyChanged
    
        Protected Overridable Sub OnPropertyChanged(<CallerMemberName()> Optional propertyName As String = Nothing)
            RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
        End Sub
        Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged
    End Class
    
    Public Class Customers
        Inherits ModelBase
    
        Private _customer_code As String
        Public Property customer_code As String
            Get
                Return _customer_code
            End Get
            Set(value As String)
                If Not value = _customer_code Then
                    _customer_code = value
                    OnPropertyChanged()
                End If
            End Set
        End Property
        Public Property customer_name As String
    End Class
    
    Public Class Form1
        Private WithEvents head As Customers
    
        Sub New()
            InitializeComponent()
    
            head = New Customers
            AddHandler head.PropertyChanged, AddressOf HeaderProperties_ValueChanged
            SetupHeaderControls()
        End Sub
    
        Private Sub SetupHeaderControls()
            For Each prop In head.GetType.GetProperties
                Select Case prop.Name
                    Case "is_output", "created_at", "created_name", "updated_at", "updated_name", "order_date"
                        '何もしない
                    Case Else
                        '同名のコントロールを取得
                        Dim con As Control = common.FindControl(Me, prop.Name)
                        'プロパティとコントロールの紐づけ
                        DataBindingsToControls(con, head, prop.Name)
                End Select
            Next
        End Sub
    
        Private Sub DataBindingsToControls(con As Control, src As Object, srcProperty As String)
            Dim prop As String = ""
            Select Case True
                Case TypeOf con Is TextBox, TypeOf con Is Label
                    con.DataBindings.Add("Text", src, srcProperty, True, DataSourceUpdateMode.OnValidation)
                Case TypeOf con Is ComboBox
                    con.DataBindings.Add("SelectedValue", src, srcProperty, True, DataSourceUpdateMode.OnPropertyChanged)
                Case TypeOf con Is CheckBox, TypeOf con Is RadioButton
                    con.DataBindings.Add("Checked", src, srcProperty, True, DataSourceUpdateMode.Never)
                Case TypeOf con Is DateTimePicker
                    con.DataBindings.Add("Value", src, srcProperty, True, DataSourceUpdateMode.OnValidation)
            End Select
        End Sub
    
        Private Sub HeaderProperties_ValueChanged(sender As Object, e As PropertyChangedEventArgs) Handles head.PropertyChanged
            If e.PropertyName = "customer_code" Then
                If Not head.customer_code = "" Then
                    Dim masterUtil As New MasterUtil
                    '入力値の前を"0"で埋める
                    head.customer_code = common.SetPrefix(head.customer_code, 6, "0")  '←プロパティの値は桁補完できているが、テキストボックスに反映されない
                    head.customer_name = masterUtil.GetCustomerName(head.customer_code)
                End If
            End If
        End Sub
    End Class

マルチポストを報告
違反を報告
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
親記事 →Re[1]: フォームコントロールへのDataBindingsでプロパティが相互反映されない /魔界の仮面弁士
 
上記関連ツリー

Nomalアイコン フォームコントロールへのDataBindingsでプロパティが相互反映されない / やむ (18/11/05(Mon) 13:38) #34016 ←Now
Nomalアイコン Re[1]: フォームコントロールへのDataBindingsでプロパティが相互反映されない / 魔界の仮面弁士 (18/11/05(Mon) 15:46) #34017
  └Nomalアイコン Re[2]: フォームコントロールへのDataBindingsでプロパティが相互反映されない / 魔界の仮面弁士 (18/11/05(Mon) 17:10) #34019
    └Nomalアイコン Re[3]: フォームコントロールへのDataBindingsでプロパティが相互反映されない / やむ (18/11/05(Mon) 17:58) #34020
      └Nomalアイコン Re[4]: フォームコントロールへのDataBindingsでプロパティが相互反映されない / やむ (18/11/06(Tue) 09:51) #34021 解決み!
        └Nomalアイコン Re[5]: フォームコントロールへのDataBindingsでプロパティが相互反映されない / 魔界の仮面弁士 (18/11/06(Tue) 11:12) #34022 解決み!
          └Nomalアイコン Re[6]: フォームコントロールへのDataBindingsでプロパティが相互反映されない / やむ (18/11/06(Tue) 14:20) #34023 解決み!
            └Nomalアイコン Re[7]: フォームコントロールへのDataBindingsでプロパティが相互反映されない / やむ (18/11/06(Tue) 15:42) #34024 解決み!

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/


- Child Tree -