DataBinding mit eigener Ereignisbehandlung

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von pega.

    DataBinding mit eigener Ereignisbehandlung

    Hallo,

    ich möchte zwei Controls mittels DataBinding verknüpfen und die OnPropertyChanged mit eigenen zwischengeschalteten Routinen versehen. Leider funktioniert mein Code nur in 1 Richtung. Am beispiel einer TrackBar, die bei einem Richtextcontrol die SelectionLength steuert, wird dies deutlich. Wenn ich die Trackbar.Value ändere, dann ändert sich die SelectionLength, wenn ich aber in der RTF mit der Maus die SelectionLength ändere, bleibt der Trackbar unverändert.


    VB.NET-Quellcode

    1. Private Sub frm_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
    2. Dim rtfBinding = New Binding("Value", Me.rtf, "SelectionLength", _
    3. False, DataSourceUpdateMode.OnPropertyChanged)
    4. AddHandler rtfBinding.Format, AddressOf SelectionLength2TrackBar
    5. AddHandler rtfBinding.Parse, AddressOf TrackBar2SelectionLength
    6. trackBar1.DataBindings.Add(rtfBinding)
    7. End Sub
    8. Private Sub SelectionLength2TrackBar(ByVal sender As Object, _
    9. ByVal e As ConvertEventArgs)
    10. If e.Value Is Nothing Then Exit Sub
    11. e.Value = CInt(e.Value / 2)
    12. End Sub
    13. Private Sub TrackBar2SelectionLength(ByVal sender As Object, _
    14. ByVal e As ConvertEventArgs)
    15. If e.Value Is Nothing Then Exit Sub
    16. e.Value = CInt(e.Value * 2)
    17. End Sub


    Peter
    sowas ähnliches habichmal ziemlich weit fortentwickelt: PropertyNotifying

    hmm - eiglich sollte Synchronisieren mit Databinding auch reichen.

    ich glaub sogar, prinzipiell machst du schon richtig, nur eine Änderung von Richtextbox.SelectionLength verursacht kein Event, also es müsste ein SelectionLengthChanged-Event geben, wenn Richtextbox.SelectionLength als BindungsQuelle funktionieren soll.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    es gibt das SelectionChanged Ereignis, das auch aufgerufen wird. Um dein PropertyNotifying-Projekt zu verstehen, brauch ich wohl etwas Zeit.
    Die SelectionLength2TrackBar wird übrigens nur 1x beim Erstellen der DataBindung aufgerufen, dann nicht mehr.