BindingManagerBase.BindingComplete BindingManagerBase.BindingComplete BindingManagerBase.BindingComplete BindingManagerBase.BindingComplete Event


データ バインディング操作の完了時に発生します。Occurs at the completion of a data-binding operation.

 event System::Windows::Forms::BindingCompleteEventHandler ^ BindingComplete;
public event System.Windows.Forms.BindingCompleteEventHandler BindingComplete;
member this.BindingComplete : System.Windows.Forms.BindingCompleteEventHandler 
Public Custom Event BindingComplete As BindingCompleteEventHandler 

次のコード例は、処理する方法を示します、BindingCompleteイベントと同じデータ ソースにバインドされている複数のコントロールは、コントロール値のいずれかが変更されたときの同期を維持することを確認します。The following code example demonstrates how to handle the BindingComplete event and ensure multiple controls bound to the same data source remain synchronized when one of the control values is changed. この例を実行するには、Windows フォームと呼び出しにコードを貼り付けます、InitializeControlsAndDataフォームのコンス トラクターのメソッドまたはLoadイベント処理メソッド。To run this example, paste the code into a Windows Form and call the InitializeControlsAndData method from the form's constructor or Load event-handling method.

private void InitializeControlsAndData()
    // Initialize the controls and set location, size and 
    // other basic properties.
    this.dataGridView1 = new DataGridView();
    this.textBox1 = new TextBox();
    this.textBox2 = new TextBox();
    this.dataGridView1.ColumnHeadersHeightSizeMode =
    this.dataGridView1.Dock = DockStyle.Top;
    this.dataGridView1.Location = new Point(0, 0);
    this.dataGridView1.Size = new Size(292, 150);
    this.textBox1.Location = new Point(132, 156);
    this.textBox1.Size = new Size(100, 20);
    this.textBox2.Location = new Point(12, 156);
    this.textBox2.Size = new Size(100, 20);
    this.ClientSize = new Size(292, 266);

    // Declare the DataSet and add a table and column.
    DataSet set1 = new DataSet();

    // Add some rows to the table.
    set1.Tables[0].Rows.Add("hot chocolate");
    set1.Tables[0].Rows.Add("orange juice");

    // Add the control data bindings.
    dataGridView1.DataSource = set1;
    dataGridView1.DataMember = "Menu";
    textBox1.DataBindings.Add("Text", set1,
        "Menu.Beverages", true, DataSourceUpdateMode.OnPropertyChanged);
    textBox2.DataBindings.Add("Text", set1,
        "Menu.Beverages", true, DataSourceUpdateMode.OnPropertyChanged);

    BindingManagerBase bmb = this.BindingContext[set1, "Menu"];
    bmb.BindingComplete += new BindingCompleteEventHandler(bmb_BindingComplete);

private void bmb_BindingComplete(object sender, BindingCompleteEventArgs e)
    // Check if the data source has been updated, and that no error has occurred.
    if (e.BindingCompleteContext ==
        BindingCompleteContext.DataSourceUpdate && e.Exception == null)

        // If not, end the current edit.
        e.Binding.BindingManagerBase.EndCurrentEdit(); ;
Dim WithEvents bmb As BindingManagerBase

Private Sub InitializeControlsAndData() 
    ' Initialize the controls and set location, size and 
    ' other basic properties.
    Me.dataGridView1 = New DataGridView()
    Me.textBox1 = New TextBox()
    Me.textBox2 = New TextBox()
    Me.dataGridView1.ColumnHeadersHeightSizeMode = _
    Me.dataGridView1.Dock = DockStyle.Top
    Me.dataGridView1.Location = New Point(0, 0)
    Me.dataGridView1.Size = New Size(292, 150)
    Me.textBox1.Location = New Point(132, 156)
    Me.textBox1.Size = New Size(100, 20)
    Me.textBox2.Location = New Point(12, 156)
    Me.textBox2.Size = New Size(100, 20)
    Me.ClientSize = New Size(292, 266)
    ' Declare the DataSet and add a table and column.
    Dim set1 As New DataSet()
    ' Add some rows to the table.
    set1.Tables(0).Rows.Add("hot chocolate")
    set1.Tables(0).Rows.Add("orange juice")

    ' Add the control data bindings.
    dataGridView1.DataSource = set1
    dataGridView1.DataMember = "Menu"
    textBox1.DataBindings.Add("Text", set1, "Menu.Beverages", _
        True, DataSourceUpdateMode.OnPropertyChanged)
    textBox2.DataBindings.Add("Text", set1, "Menu.Beverages", _
        True, DataSourceUpdateMode.OnPropertyChanged)

    ' Get the BindingManagerBase for this binding.
    bmb = Me.BindingContext(set1, "Menu")

End Sub

Private Sub bmb_BindingComplete(ByVal sender As Object, ByVal e As BindingCompleteEventArgs) _
    Handles bmb.BindingComplete

    ' Check if the data source has been updated, and that no error has occurred.
    If e.BindingCompleteContext = BindingCompleteContext.DataSourceUpdate _
        AndAlso e.Exception Is Nothing Then

        ' If not, end the current edit.
    End If
End Sub


BindingCompleteイベントは、次を含めることがデータ バインディング操作を完了した後に発生します。The BindingComplete event occurs after the completion of a data-binding operation, which may include the following:

  • データ ソースから情報をバインドされたコントロールのプロパティにプッシュします。Pushing information from the data source into the property of its bound control.

  • その関連付けられたデータ ソースにバインドされたコントロールから情報を取得します。Pulling information from a bound control into its associated data source.

この状態を調べることで決定できますはこのイベントは、バインド操作の完了状態に関係なく発生に注意してください、BindingCompleteStateのプロパティ、BindingCompleteEventArgsイベントに関連付けられたパラメーター。Note that this event is raised regardless of the completion status of the binding operation, although this status can be determined by examining the BindingCompleteState property of the BindingCompleteEventArgs parameter associated with the event. BindingCompleteEventArgs エラーと例外の情報を含めることもできます。BindingCompleteEventArgs may also contain error and exception information. たとえばにデータ ソースから null 値をプッシュしようとしています。 バインド操作、DateTimePickerコントロールは、例外を後に生成、DateTimeすることはできませんnullFor example, a binding operation that attempts to push a null value from a data source into a DateTimePicker control will generate an exception, since a DateTime cannot be null. この場合、バインディング操作が正常に完了しないが、BindingCompleteイベントが発生し、イベントについては、バインドの失敗した試行が含まれます。In this case, although the binding operation does not successfully complete, the BindingComplete event will be raised, and the event will contain information on the failed binding attempt.