VB.NET-Tipp 0090: Synchronisieren mit Databinding
von Spatzenkanonier
Beschreibung
Datenbindung (Databinding) funktioniert nicht nur mit Listen, sondern auch mit Einzelobjekten, sofern sie die Schnittstelle "System.ComponentModel.INotifyPropertyChanged" implementieren. Das ist sehr nützlich bei der Synchronisation von Eigenschaften.
Hier implementiert das Form selbst "INotifyPropertyChanged", und wird so zur Datenquelle, an deren Property "Brightness" zwei Textboxen und eine Scrollbar gebunden sind. Effekt: Ohne Ereigniscode kann über drei Eingabekanäle die Helligkeit eingestellt werden. Die Synchronisierung der Steuerelemente erfolgt dabei automatisch.
Schwierigkeitsgrad: | Framework-Version(en): .NET Framework 1.0, .NET Framework 1.1, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5 | .NET-Version(en): Visual Basic 2002, Visual Basic 2003, Visual Basic 2005, Visual Basic 2008 | Download: |
' Dieser Quellcode stammt von http://www.activevb.de ' und kann frei verwendet werden. Für eventuelle Schäden ' wird nicht gehaftet. ' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. ' Ansonsten viel Spaß und Erfolg mit diesem Source! ' Projektversion: Visual Studio 2005 ' Option Strict: An ' ' Referenzen: ' - System ' - System.Data ' - System.Drawing ' - System.Windows.Forms ' - System.Xml ' ' Imports: ' - Microsoft.VisualBasic ' - Microsoft.VisualBasic.ControlChars ' - System ' - System.Collections.Generic ' - System.Drawing ' - System.Diagnostics ' - System.Windows.Forms ' ' ############################################################################## ' ############################ frmDirectBinding.vb ############################# ' ############################################################################## Imports System.ComponentModel Public Class frmDirectBinding 'Das Interface "INotifyPropertyChanged" stellt einen Benachrichtigungsmechanismus, den das ' DataBinding benutzen kann... Implements INotifyPropertyChanged '...nämlich dieses Event Public Event PropertyChanged(ByVal sender As Object, ByVal e As PropertyChangedEventArgs) _ Implements INotifyPropertyChanged.PropertyChanged Private _Brightness As Byte Public Property Brightness() As Byte Get Return _Brightness End Get Set(ByVal Value As Byte) _Brightness = Value ' drei gleiche Farbkomponenten ergeben einen Grauwert in angegebener Helligkeit MyBase.BackColor = Color.FromArgb(Value, Value, Value) 'Alle angeschlossenen Bindings benachrichtigen, daß Brightness geändert wurde RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("Brightness")) End Set End Property Private Sub frmDirectBinding_Load(ByVal sender As Object, ByVal e As EventArgs) _ Handles MyBase.Load TextBox1.DataBindings.Add("Text", Me, "Brightness", False, DataSourceUpdateMode.OnPropertyChanged) ' DataSourceUpdateMode.OnValidation: Textänderungen werden erst nach Validierung wirksam ' (i.A. nach Fokusverlust) ' nullValue: hat bei Valuetypen (hier: Byte) keine Wirkung ' formatString "c": spaßeshalber Werte als Währung (Currency) anzeigen TextBox2.DataBindings.Add( _ "Text", Me, "Brightness", formattingEnabled:=True, _ updateMode:=DataSourceUpdateMode.OnValidation, _ nullValue:=Nothing, formatString:="c") HScrollBar1.DataBindings.Add( _ "Value", Me, "Brightness", False, DataSourceUpdateMode.OnPropertyChanged) Me.Brightness = 127 End Sub End Class
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.