Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Tijdens de implementatie van gegevensbinding in Windows Forms zijn meerdere besturingselementen gebonden aan dezelfde gegevensbron. In de volgende situaties moet u ervoor zorgen dat de afhankelijke eigenschappen van het besturingselement gesynchroniseerd blijven met elkaar en de gegevensbron:
Als de gegevensbron geen IBindingListimplementeert en daarom ListChanged gebeurtenissen van het type ItemChangedgenereert.
Als de gegevensbron IEditableObjectimplementeert.
In het vorige geval kunt u een BindingSource gebruiken om de gegevensbron aan de besturingselementen te koppelen. In het laatste geval gebruikt u de BindingSource en handelt u de BindingComplete gebeurtenis af, gevolgd door het aanroepen van EndCurrentEdit op de bijbehorende BindingManagerBase.
Voorbeeld van bindingsbesturingselementen met BindingSource
In het volgende codevoorbeeld ziet u hoe u drie besturingselementen, twee tekstvakbesturingselementen en een DataGridView besturingselement koppelt aan dezelfde kolom in een DataSet met behulp van een BindingSource onderdeel. In het voorbeeld ziet u hoe u de BindingComplete gebeurtenis kunt afhandelen. Het zorgt ervoor dat wanneer de tekstwaarde van het ene tekstvak wordt gewijzigd, het andere tekstvak en het besturingselement DataGridView worden bijgewerkt met de juiste waarde.
In het voorbeeld wordt een BindingSource gebruikt om de gegevensbron en de besturingselementen te binden. U kunt de besturingselementen ook rechtstreeks aan de gegevensbron koppelen en de BindingManagerBase uit de BindingContext van het formulier voor de binding ophalen, en vervolgens de BindingComplete-gebeurtenis voor de BindingManagerBaseafhandelen. Zie de Help-pagina over de BindingComplete gebeurtenis van BindingManagerBasevoor meer informatie over het binden van de gegevensbron en de besturingselementen.
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
Zie ook
.NET Desktop feedback