vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB.NET - Ein- und Umsteiger
Eigene Klasse für Einstellungen - Fragen zu DataBindings 
Autor: Bismosa
Datum: 09.01.14 10:21

Hallo!

Ich nutze in meinen kleinen Programmen gerne eine eigene Serialisierbare Klasse für Einstellungen.
Diese Klasse lässt sich einfach als XML Speichern:
Imports System.IO
Imports System.Xml.Serialization
Imports System.Reflection
 
<Serializable()> _
Public Class clsEinstellungen
    Implements ICloneable
    Implements System.ComponentModel.INotifyPropertyChanged
 
    Private _Test1 As String = "Demo1"
    Property Test1 As String
        Get
            Return _Test1
        End Get
        Set(value As String)
            _Test1 = value
            NotifyPropertyChanged("Test1")
        End Set
    End Property
 
    Private _Test2 As String = "Demo2"
    Property Test2 As String
        Get
            Return _Test2
        End Get
        Set(value As String)
            _Test2 = value
            NotifyPropertyChanged("Test2")
        End Set
    End Property
 
    Public Function Clone() As Object Implements System.ICloneable.Clone
        Return MemberwiseClone()
    End Function
 
    ' Creates a copy of an object
    Public Shared Function GetCopy(Of SourceType As {Class, New})(ByVal Source _
      As SourceType) As SourceType
 
        Dim ReturnValue As New SourceType
        Dim sourceProperties() As PropertyInfo = Source.GetType().GetProperties( _
          )
 
        For Each sourceProp As PropertyInfo In sourceProperties
            sourceProp.SetValue(ReturnValue, sourceProp.GetValue(Source, _
              Nothing), Nothing)
        Next
        Return ReturnValue
    End Function
 
    <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
Ich versuche mich jetzt gerade an DataBindings, damit nicht immer alles manuell programmiert werden muss. Daher habe ich im o.g. Code auch schon das Propertychanged Event mit drin.

Soweit funktioniert das gut. Habe ich eine Main-Form und setze ein Property in meiner Klasse neu (z.B. über einen Button), wird auch ein dazugehöriges Label aktualisiert.

Jetzt möchte ich jedoch einen Einstellungsdialog aufbauen, der aber nicht mit der Instanz der Klasse sondern mit einer Kopie arbeitet. So kann ich über einen Abbrechen-Button einfach alle Änderungen verwerfen. Dafür habe ich die "GetCopy()" bzw. die "Clone()" Prozedur gleich mit in die Klasse aufgenommen.
Public Class FrmEinstellungen
 
    Private Einstellungen As clsEinstellungen
 
    Private Sub FrmEinstellungen_Load(sender As System.Object, e As _
      System.EventArgs) Handles MyBase.Load
        Me.Einstellungen = clsEinstellungen.GetCopy(Form1.Einstellungen)
        TextBox1.DataBindings.Add(New Binding("Text", Einstellungen, "Test1", _
          True, DataSourceUpdateMode.OnPropertyChanged))
        TextBox2.DataBindings.Add(New Binding("Text", Einstellungen, "Test2", _
        True, DataSourceUpdateMode.OnPropertyChanged))
    End Sub
 
    Private Sub BtnAbbrechen_Click(sender As System.Object, e As _
      System.EventArgs) Handles BtnAbbrechen.Click
        Me.Close()
    End Sub
 
    Private Sub BtnSpeichern_Click(sender As System.Object, e As _
      System.EventArgs) Handles BtnSpeichern.Click
        Form1.Einstellungen = clsEinstellungen.GetCopy(Einstellungen)
        Me.Close()
    End Sub
 
End Class
Das Problem an der Sache ist aber wie folgt:
Ich muss zum Speichern der Einstellungen die Kopie wieder zurückkopieren. Sobald ich das Object wieder zurückclone funktionieren die DataBindings in der MainForm nicht mehr. Diese müssten dann nochmal wieder neu gesetzt werden.

Irgendwie ist das schwierig zu erklären. Daher habe ich mal ein kleines Testprogramm gemacht:
http://drive.google.com/uc?export=download&id=0B--trzUVMN-zdGtPTlo4UURSVFU

Meine Fragen sind jetzt eigentlich:
Wie würdet ihr das machen? Jedes mal die DataBindings erneuern? (wäre ja auch kein großer Aufwand)
oder keine Möglichkeit des Abbrechens geben. Wurde etwas in den Einstellungen verändert wird es sofort übernommen (also gar nicht mit einer Objektkopie)

Oder sollte man so etwas lieber gar nicht mit DataBindings machen? So oft kommt es ja auch eigentlich nicht vor, das man Einstellungen nochmal als Label in der MainForm anzeigt...

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

 ThemaViews  AutorDatum
Eigene Klasse für Einstellungen - Fragen zu DataBindings2.429Bismosa09.01.14 10:21
Re: Eigene Klasse für Einstellungen - Fragen zu DataBindings1.476Manfred X09.01.14 11:03
Re: Eigene Klasse für Einstellungen - Fragen zu DataBindings1.478Bismosa09.01.14 11:30
Re: Eigene Klasse für Einstellungen - Fragen zu DataBindings1.541Manfred X09.01.14 11:35
.... wegen Clonen1.506Manfred X09.01.14 12:15
Re: .... wegen Clonen1.614Bismosa09.01.14 16:08
Re: .... wegen Clonen1.468Manfred X09.01.14 16:26
Re: .... wegen Clonen1.481Bismosa10.01.14 09:25
Re: .... wegen Clonen1.503ErfinderDesRades10.01.14 09:46
Re: .... wegen Clonen1.559Bismosa10.01.14 11:54
Re: .... wegen Clonen1.461Manfred X10.01.14 15:02
Re: .... wegen Clonen1.435Bismosa17.01.14 10:18
Re: .... wegen Clonen1.477ErfinderDesRades17.01.14 10:53
Re: .... wegen Clonen1.488Bismosa17.01.14 12:08
Verschlüsselung1.425Manfred X17.01.14 12:38
Re: Verschlüsselung1.502Bismosa17.01.14 12:49
Re: Eigene Klasse für Einstellungen - Fragen zu DataBindings1.543ErfinderDesRades09.01.14 13:07
Re: Eigene Klasse für Einstellungen - Fragen zu DataBindings1.586Manfred X09.01.14 15:18
Re: Eigene Klasse für Einstellungen - Fragen zu DataBindings1.453ErfinderDesRades09.01.14 16:54
Re: Eigene Klasse für Einstellungen - Fragen zu DataBindings1.474Manfred X09.01.14 17:00
Re: Eigene Klasse für Einstellungen - Fragen zu DataBindings1.513ModeratorDaveS09.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-2024 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