Anzeige

Werte in einer XML Datei löschen


werner_sg

Erfahrenes Mitglied
#1
Hallo zusammen.

ich arbeite gerade an einer Windows Form zum zählen von Clicks gelöst habe ich das ganze jetzt mit einem XML File.

Soweit läuft alles Wunderbar und Fehlerfrei, nur mit dem zurücksetzen der Werte auf 0 über einen Button bekomme ich nicht hin.

Meine bisherigen Versuche welche ich aus dem Code wieder entfernt habe sorgten nur dafür das entweder der ausgewählte Wert oder alledirekt beim Starten der Form auf 0 gesetzt wurde obwohl der Befehl weder in der Startform noch im Load standen sondern im Button.

Vieleicht kann mir hier einer weiterhelfen:)

Die Form Auszugsweise
Code:
Public Class Form4

    Private FileName As String = "File.xml"
    Private MyData As MyFileType = New MyFileType

    Dim B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17 As Integer

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        ' alle XML Werte zurücksetzen

    End Sub

    Private Sub Label4_Click(sender As Object, e As EventArgs) Handles Label4.Click

    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        CenterPanel()

        MyData = XMLDeSerialize(Of MyFileType)(FileName)

        B1 = MyData.B1
        Label1.Text = B1
Die XML vB

Code:
Imports System.IO
Imports System.Xml.Serialization
Imports System.Xml
Imports System.Text
Imports System
Imports System.Runtime.Serialization
Imports System.Runtime.Serialization.Formatters.Binary

Public Module XML_Control

    ''' <summary>
    ''' Diese Funktion deserialisiert eine XML Datei und gibt das Ergebnis in ein Objekt zurück
    ''' </summary>
    ''' <typeparam name="T">Der Typ des Objekts</typeparam>
    ''' <param name="FileName">Die XML Datei aus der gelesen werden soll</param>
    Public Function XMLDeSerialize(Of T)(ByVal FileName As String) As Object
        If Not IO.File.Exists(FileName) Then
            Return New MyFileType
        End If
        Dim XML As New XmlSerializer(GetType(T))
        Dim FS As New FileStream(FileName, FileMode.Open)
        Dim RetObj As Object = XML.Deserialize(FS)
        FS.Close()
        Return RetObj
    End Function

    ''' <summary>
    ''' Diese Funktion serialisiert ein Objekt und speichert es als XML-Format Datei
    ''' </summary>
    ''' <param name="Obj">Das zu serialisierende Objekt</param>
    ''' <param name="FileName">Die XML Datei in der das Ergebnis gespeichert werden soll</param>
    Public Sub XMLSerialize(ByVal Obj As Object, ByVal FileName As String)
        Dim xml As New XmlSerializer(Obj.GetType())
        Dim FS As New FileStream(FileName, FileMode.Create)
        xml.Serialize(FS, Obj)
        FS.Close()
    End Sub

End Module

<Serializable()> Public Class MyFileType

    Public B1 As Integer = 0
    Public B2 As Integer = 0
    Public B3 As Integer = 0
    Public B4 As Integer = 0
    Public B5 As Integer = 0
    Public B6 As Integer = 0
    Public B7 As Integer = 0
    Public B8 As Integer = 0
    Public B9 As Integer = 0
    Public B10 As Integer = 0
    Public B11 As Integer = 0
    Public B12 As Integer = 0
    Public B13 As Integer = 0
    Public B14 As Integer = 0
    Public B15 As Integer = 0
    Public B16 As Integer = 0
    Public B17 As Integer = 0



    Public Sub New()
        B1 = 0
        B2 = 0
        B3 = 0
        B4 = 0
        B5 = 0
        B6 = 0
        B7 = 0
        B8 = 0
        B9 = 0
        B10 = 0
        B11 = 0
        B12 = 0
        B13 = 0
        B14 = 0
        B15 = 0
        B16 = 0
        B17 = 0


    End Sub

End Class
die XML Datei

Code:
<?xml version="1.0"?>
<MyFileType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <B1>0</B1>
  <B2>0</B2>
  <B3>0</B3>
  <B4>0</B4>
  <B5>0</B5>
  <B6>0</B6>
  <B7>0</B7>
  <B8>0</B8>
  <B9>0</B9>
  <B10>0</B10>
  <B11>0</B11>
  <B12>0</B12>
  <B13>0</B13>
  <B14>0</B14>
  <B15>0</B15>
  <B16>0</B16>
  <B17>0</B17>
</MyFileType>
 

Spyke

Capoeirista
Premium-User
#2
Arbeite direkt mit MyData, sprich die B Variablen in der Form4 brauchst du nicht.

Code:
MyData.B1 = MyData.B1 + 1
.....
MyData.B1 = 0
.....
XMLSerialize(MyData, FileName)
 

werner_sg

Erfahrenes Mitglied
#3
Hallo Spyke sorry für die späte Rückmeldung und Danke für die Antwort,

Habe das ganze Projekt jetzt mit einer Access Datenbank am laufen, und baue mir jetzt gerade noch eine zweite Version mit einer online sql Datenbank

Gruß Werner
 
Anzeige

Neue Beiträge

Anzeige