C# Xml-Datei in Programm einlesen und Änderungen speichern?

1 Antwort

Nur Lesen wird daher nicht ausreichen. Du musst das XML ändern und dann neu in die Datei schreiben. Dazu gibt es die XmlWriter-Klasse.

In deinem Fall würde ich allerdings eine Klasse anlegen, die eine Liste an Objekten hält, die jeweils eine Person beschreiben. Die De-/Serialisierung dieses Objekts kann eine Instanz des XmlSerializer für dich übernehmen.

Wie du XmlWriter oder XmlSerializer benutzten kannst, steht in der MSDN Dokumentation.

Programm zur Erzeugung von Zufallszahlen?


 int[] zahlen;
        int x;
        int startwert;
        int endwert;
        Random zufall;
        double anzahl,i,zahl;
        public Form1()
        {
            InitializeComponent();

            zahlen = new int[100];
            zufall = new Random();
            x = zufall.Next(startwert, endwert);
        }
        private bool gefunden(int x)
        {
            for (int i = 0; i < zahlen.Length; i++)
            {
                if (zahlen[i] == x)
                {
                    return true;
                }
            }
            return false;
        }
   

gf

        private void button2_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == string.Empty)
            {
                MessageBox.Show("TextBox1 ist leer", "Fehler");

            }
            if (textBox2.Text == string.Empty)
            {
                MessageBox.Show("TextBox2 ist leer", "Fehler");
            }
            if (textBox3.Text == string.Empty)

            {
                MessageBox.Show("TextBox3 ist leer", "Fehler");
            }
           
            startwert = Convert.ToInt32(textBox1.Text);
            endwert = Convert.ToInt32(textBox2.Text);
       
            for (int i = 0; i < zahlen.Length; i++)
            {
                do
                {
                    while (gefunden(x))
                    {
                        x = zufall.Next(startwert, endwert);
                    }
                } while (i<anzahl);


                zahlen[i] = x;
            }
            listBox1.Items.Add(x);
        }
        private void button4_Click(object sender, EventArgs e)
        {
            Close();
        }
    }

Hallo kann jemand helfen ich komme nicht weiter ich muss ein Programm zur Erzeugung von Zufakkszahlen es sokken maximale 100 Zufallszahlen wahlweise mit oder ohne Duplikate erzeugt und in einer Listbox ausgegben werden

...zur Frage

C# Delegaten/Invoke/Thread/Backgroundworker?

Huhu,

bin aktuell am rumexperimentieren, da ich es am lernen bin. Dieses Test Form hat nur 2 Dinge die es machen soll.

  1. Das Form Load wird mit einem Label gestartet um den Spieler zu begrüßen. Nach 2 bzw 3 Sekunden soll dass label unsichtbar werden mithilfe eines Backgroundworkes und delegaten. Alles startet normal. Nach den besagten paar Sekunden wirft er mir eine exeption. Als Grund nennt er mir immer das label1. Meine Vermutung ist, dass label 1 ja bereits Form1 Thread läuft und daher nicht mehr geändert werden kann über einen Backgroundworker.

Die Exeption lautet : Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement label1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde."

  1. Der zweite Punkt wäre, dass bei einem Button click ein Fenster aufgehen soll und sich nach ein paar Sekunden wieder schließen soll. Das tut es auch. Drücke ich aber nochmal den Button, wirft er mir diese Exeption: System.ObjectDisposedException: "Auf das verworfene Objekt kann nicht zugegriffen werden.Objektname: "Skynet"."

Hier ist der Code:

Für den Kenner ist das bestimmt alles Kraut und Ruben. Kurz: Ein Chaos. Aber aktuell ist es eher Try and Error :)

 public partial class Form1 : Form

  {

    public delegate void invokeDelegate();

    //Backgroundworker wird initialisiert

    public BackgroundWorker arbeiter = new BackgroundWorker();

    public BackgroundWorker arbeiter2 = new BackgroundWorker();

    //Delegaten

    public delegate void deleWorker (BackgroundWorker a);

    public delegate void gruss(BackgroundWorker b);

    //Begrüßungsfenster

    Skynet hello = new Skynet();

    //Zeigt Skynet Fenster an

    public void Show()

    {

       hello.Show();

        Thread.Sleep(3000);

        this.hello.Close();

        hello.Dispose();

    }

    //Willkommensgruß wird für 2 Sekunden angezeigt

    private void Willkommensgruss(Label a)

    {

      a.Text = "Willkommen, Fremder.";

      Thread.Sleep(2000);

        }

    public Form1()

    {

      InitalizeComponent();

      arbeiter.DoWork += backgroundWorker1_DoWork;

      arbeiter2.DoWork += backgroundWorker2_DoWork;

      Skynet hello = new Skynet();

         }

    private void Form1_Load(object sender, EventArgs e)

    {

      //delegate

      gruss hallo = new gruss(backgroundWorker2.RunWorkerAsync);

        hallo.Invoke(backgroundWorker2);

    }

    //Öffnet Skynet Fenster

    private void button2_Click(object sender, EventArgs e)

    {

      deleWorker test = new deleWorker(backgroundWorker1.RunWorkerAsync);

      test.Invoke(backgroundWorker1);

    }

    //Backgroundworker 1

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)

    {

     Show();    

    }

    //Backgroundworker 2

    private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)

    {

    Willkommensgruss(label1);

    }

  }

}

...zur Frage

Was möchtest Du wissen?