1

Visual Basic フォーム アプリケーションでユーザー コントロールを作成しました。IDと呼ばれるプロパティを持っています

Private intID As Integer

Public Property ID() As Integer
    Get
        Return intID
    End Get
    Set(value As Integer)
        intID = value
    End Set
End Property

また、ユーザー コントロールの Load メソッドでは、ID に基づいてユーザー コントロールのコンポーネントを更新しています。

Private Sub UserControl_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    UpdateUserControlFields() ' This Method uses ID within
End Sub

このユーザー コントロールを追加したフォームで何かを行うたびに、このコントロールが正しい ID で表示されるようにします。たとえば、DataGridView があり、選択が変更されるたびにユーザー コントロールを更新する必要があります。

Private Sub MyDataGridView_SelectionChanged(sender As Object, e As EventArgs) Handles MyDataGridView.SelectionChanged
    If Not IsNothing(MyBindingSource.Current) Then
        UserControlONE.ID = MyBindingSource.Current("someID")
        UserControlONE.Refresh() ' Doesn't Work.
        UserControlONE.Update() ' Doesn't Work.
    End If
End Sub

問題は、ユーザー コントロールが選択した ID で正しく読み込まれるのは初回のみで、そのデータを再読み込みできないようです。つまり、プロパティ ID の値が変更された場合、ユーザー コントロールの再読み込みを強制する方法がわかりません。最初に読み込まれた ID と同じデータが表示されます。どんな助けでも大歓迎です。

4

1 に答える 1

2

コントロール ロード イベントで ID を更新する代わりに、プロパティが変更されたときに ID を更新します。

Private intID As Integer

Public Property ID() As Integer
    Get
        Return intID
    End Get
    Set(value As Integer)
        intID = value
        UpdateUserControlFields() ' This Method uses ID within
    End Set
End Property

UserControl_Load イベント は、「コントロールが初めて表示される前に発生します。」

于 2013-04-03T16:07:27.990 に答える