Aracılığıyla paylaş


Birden çok denetimi aynı veri kaynağına eşitleme

Windows Forms'da veri bağlamanın uygulanması sırasında, birden çok denetim aynı veri kaynağına bağlanır. Aşağıdaki durumlarda, denetimin bağlı özelliklerinin birbiriyle ve veri kaynağıyla eşitlenmiş olarak kaldığından emin olmak gerekir:

Önceki örnekte, veri kaynağını denetimlere bağlamak için bir BindingSource kullanabilirsiniz. İkinci durumda, bir BindingSource kullanır ve BindingComplete olayını işler, ardından ilişkili EndCurrentEditüzerinde BindingManagerBase çağırırsınız.

BindingSource kullanan bağlama denetimleri örneği

Aşağıdaki kod örneği, bir DataGridView bileşeni kullanarak üç denetimin, iki metin kutusu denetiminin ve bir DataSet denetiminin BindingSource aynı sütuna nasıl bağlanacağını gösterir. Örnek, BindingComplete olayının nasıl işleneceğini gösterir. Bir metin kutusunun metin değeri değiştirildiğinde, diğer metin kutusunun ve DataGridView denetiminin doğru değerle güncelleştirilmesini sağlar.

Örnek, veri kaynağını ve denetimleri bağlamak için bir BindingSource kullanır. Alternatif olarak, denetimleri doğrudan veri kaynağına bağlayabilir, bağlamanın BindingManagerBase'sını formun BindingContext'inden alabilir ve ardından BindingCompleteiçin BindingManagerBase olayını işleyebilirsiniz. Veri kaynağını ve denetimleri bağlama hakkında daha fazla bilgi için BindingCompleteBindingManagerBase olayı hakkında yardım sayfasına bakın.

public Form1() 
{
    InitializeComponent();
    set1.Tables.Add("Menu");
    set1.Tables[0].Columns.Add("Beverages");

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

    // Set the data source to the DataSet.
    bindingSource1.DataSource = set1;

    //Set the DataMember to the Menu table.
    bindingSource1.DataMember = "Menu";

    // Add the control data bindings.
    dataGridView1.DataSource = bindingSource1;
    textBox1.DataBindings.Add("Text", bindingSource1,
        "Beverages", true, DataSourceUpdateMode.OnPropertyChanged);
    textBox2.DataBindings.Add("Text", bindingSource1,
        "Beverages", true, DataSourceUpdateMode.OnPropertyChanged);
    bindingSource1.BindingComplete +=
        new BindingCompleteEventHandler(bindingSource1_BindingComplete);
}

void bindingSource1_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();
}
Public Class Form1
    Private Sub InitializeControlsAndDataSource()
        ' Add a table and column to DataSet.
        set1.Tables.Add("Menu")
        set1.Tables(0).Columns.Add("Beverages")

        ' Add some rows to the table.
        set1.Tables(0).Rows.Add("coffee")
        set1.Tables(0).Rows.Add("tea")
        set1.Tables(0).Rows.Add("hot chocolate")
        set1.Tables(0).Rows.Add("milk")
        set1.Tables(0).Rows.Add("orange juice")

        ' Set the data source to the DataSet.
        BindingSource1.DataSource = set1

        'Set the DataMember to the Menu table.
        BindingSource1.DataMember = "Menu"

        ' Add the control data bindings.
        DataGridView1.DataSource = BindingSource1
        TextBox1.DataBindings.Add("Text", BindingSource1, "Beverages",
            True, DataSourceUpdateMode.OnPropertyChanged)
        TextBox2.DataBindings.Add("Text", BindingSource1, "Beverages",
            True, DataSourceUpdateMode.OnPropertyChanged)
    End Sub

    Private Sub BindingSource1_BindingComplete(ByVal sender As Object,
        ByVal e As BindingCompleteEventArgs) Handles BindingSource1.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.
            e.Binding.BindingManagerBase.EndCurrentEdit()
        End If
    End Sub
        
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        InitializeControlsAndDataSource()
    End Sub
End Class

Ayrıca bakınız