vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: .... wegen Clonen 
Autor: Bismosa
Datum: 09.01.14 16:08

Hallo,

das musste ich jetzt doch erst einmal versuchen zu verstehen und umzusetzen. Vielen Dank für die ausführliche Hilfe!

Wenn ich das jetzt richtig verstanden habe, dann ändere ich "on the Fly". Also alle Änderungen werden sofort übernommen...können aber dann noch mit Abbrechen verworfen/zurückgesetzt werden. In meinem Fall ist das vielleicht nicht weiter schlimm...aber will ich denn sobald ich Einstellungen mache das immer gleich im Hauptprogramm umgesetzt haben? Eigentlich ja erst, wenn ich die neuen Einstellungen bestätige?

So habe ich das jetzt gemacht:
Einstellungsklasse:
<Serializable()> _
Public Class clsEinstellungen
    Implements System.ComponentModel.INotifyPropertyChanged
 
    <Serializable()> _
    Private Class Variablen
        Implements ICloneable
 
        Public Property Test1 As String = "Test1"
        Public Property Test2 As String = "Test2"
 
        Public Function Clone() As Object Implements System.ICloneable.Clone
            Return MemberwiseClone()
        End Function
 
    End Class
 
    Dim Original As New Variablen
    Dim Backup As New Variablen
 
    Property Test1 As String
        Get
            Return Original.Test1
        End Get
        Set(value As String)
            Original.Test1 = value
            NotifyPropertyChanged("Test1")
        End Set
    End Property
 
    Property Test2 As String
        Get
            Return Original.Test2
        End Get
        Set(value As String)
            Original.Test2 = value
            NotifyPropertyChanged("Test2")
        End Set
    End Property
 
    Public Sub Reset()
        Original = Backup.Clone
        RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(Nothing))
    End Sub
 
    Public Sub Commit()
        Backup = Original.Clone
        RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(Nothing))
    End Sub
 
    <NonSerialized()> _
    Public Event PropertyChanged(ByVal sender As Object, _
 ByVal e As System.ComponentModel.PropertyChangedEventArgs) _
 Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
 
    Private Sub NotifyPropertyChanged(ByVal info As String)
        RaiseEvent PropertyChanged(Me, _
        New System.ComponentModel.PropertyChangedEventArgs(info))
    End Sub
End Class
Main Form:
...
       lblInfo1.DataBindings.Add(New Binding("Text", Einstellungen, "Test1", _
         True, DataSourceUpdateMode.OnPropertyChanged))
        lblInfo2.DataBindings.Add(New Binding("Text", Einstellungen, "Test2", _
        True, DataSourceUpdateMode.OnPropertyChanged))
...
EinstellungsForm:
Public Class FrmEinstellungen
 
    Private Sub FrmEinstellungen_Load(sender As System.Object, e As _
      System.EventArgs) Handles MyBase.Load
        TextBox1.DataBindings.Add(New Binding("Text", Form1.Einstellungen, _
        "Test1", True, DataSourceUpdateMode.OnPropertyChanged))
        TextBox2.DataBindings.Add(New Binding("Text", Form1.Einstellungen, _
        "Test2", True, DataSourceUpdateMode.OnPropertyChanged))
    End Sub
 
    Private Sub BtnAbbrechen_Click(sender As System.Object, e As _
      System.EventArgs) Handles BtnAbbrechen.Click
        Form1.Einstellungen.Reset()
        Me.Close()
    End Sub
 
    Private Sub BtnSpeichern_Click(sender As System.Object, e As _
      System.EventArgs) Handles BtnSpeichern.Click
        Form1.Einstellungen.Save()
        Me.Close()
    End Sub
    Private Sub FrmEinstellungen_FormClosing(sender As Object, e As _
      System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Form1.Einstellungen.Reset()
        Me.Close()
    End Sub
End Class
Hier nochmal das ganze Projekt zum testen:
http://drive.google.com/uc?export=download&id=0B--trzUVMN-zcENsZElmTjh0RmM

Danke und Gruß
Bismosa
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Eigene Klasse für Einstellungen - Fragen zu DataBindings2.546Bismosa09.01.14 10:21
Re: Eigene Klasse für Einstellungen - Fragen zu DataBindings1.552Manfred X09.01.14 11:03
Re: Eigene Klasse für Einstellungen - Fragen zu DataBindings1.573Bismosa09.01.14 11:30
Re: Eigene Klasse für Einstellungen - Fragen zu DataBindings1.622Manfred X09.01.14 11:35
.... wegen Clonen1.590Manfred X09.01.14 12:15
Re: .... wegen Clonen1.692Bismosa09.01.14 16:08
Re: .... wegen Clonen1.549Manfred X09.01.14 16:26
Re: .... wegen Clonen1.572Bismosa10.01.14 09:25
Re: .... wegen Clonen1.587ErfinderDesRades10.01.14 09:46
Re: .... wegen Clonen1.659Bismosa10.01.14 11:54
Re: .... wegen Clonen1.542Manfred X10.01.14 15:02
Re: .... wegen Clonen1.524Bismosa17.01.14 10:18
Re: .... wegen Clonen1.560ErfinderDesRades17.01.14 10:53
Re: .... wegen Clonen1.564Bismosa17.01.14 12:08
Verschlüsselung1.504Manfred X17.01.14 12:38
Re: Verschlüsselung1.586Bismosa17.01.14 12:49
Re: Eigene Klasse für Einstellungen - Fragen zu DataBindings1.622ErfinderDesRades09.01.14 13:07
Re: Eigene Klasse für Einstellungen - Fragen zu DataBindings1.772Manfred X09.01.14 15:18
Re: Eigene Klasse für Einstellungen - Fragen zu DataBindings1.527ErfinderDesRades09.01.14 16:54
Re: Eigene Klasse für Einstellungen - Fragen zu DataBindings1.555Manfred X09.01.14 17:00
Re: Eigene Klasse für Einstellungen - Fragen zu DataBindings1.591ModeratorDaveS09.01.14 17:58

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel