BindingManagerBase.BindingComplete イベント


データ バインディング操作の完了時に発生します。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. たとえば、データソースからDateTimePickerコントロールに null 値をプッシュしようとするバインディング操作では、をDateTimeにするnullことはできないため、例外が発生します。For 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.