Serialisierung C#

#2735589
Lesenswert?

Hi Leute,

hab mir ne Windows Forms mit verschiedenen Controls gebaut.
Nun will ich, dass ich das Form mit sämtlichen Inhalt der Controls 
speichern kann und beim nächsten mal z.B wieder laden.
Habe es mit Serialize von "JSon" soweit gebracht, dass ich den Inhalt in 
ne Textdatei speichere und beim nächsten aufruf er wieder geladen wird.
Hier Der Code:
1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Windows.Forms;
5
using System.Runtime.Serialization.Formatters.Soap;
6
using System.IO;
7
using Newtonsoft.Json;
8
using Newtonsoft.Json.Linq;
9

10
using System.Net.NetworkInformation;
11

12
namespace WindowsFormsApplication1
13
{
14
    static class Program
15
    {
16
        static Configuration _configuration = new Configuration();
17

18
        const string fileName = @"c:\json.txt";
19

20
        /// <summary>
21
        /// Der Haupteinstiegspunkt für die Anwendung.
22
        /// </summary>
23
        [STAThread]
24
        static void Main()
25
        {
26

27
            //Ping Sender = new Ping();
28
            //PingReply Result = Sender.Send("173.194.59.94");
29
            //if (Result.Status == IPStatus.Success)
30
            //{
31
            //    MessageBox.Show("Erfolg");
32
            //}
33
            //else
34
            //{
35
            //    MessageBox.Show("Fehler");
36
            //}
37
            //string[] s = System.IO.Ports.SerialPort.GetPortNames();
38
            //foreach (string a in s)
39
            //{
40
            //    System.Diagnostics.Debug.Write(a+"\n");
41
            //}
42
            Application.EnableVisualStyles();
43
            Application.SetCompatibleTextRenderingDefault(false);
44
            ConfigurationForm configForm = new ConfigurationForm();
45
            Configuration copyConfig = _configuration.Clone();
46

47
            if (File.Exists(fileName))
48
            {
49
                string serializedConfiguration = string.Empty;
50
                using (var tf = File.OpenText(fileName))
51
                {
52
                    serializedConfiguration = tf.ReadToEnd();
53
                }
54
               copyConfig = Configuration.Deserialize(serializedConfiguration);
55
            }
56

57
            configForm.Configuration = copyConfig;
58
            DialogResult dr = configForm.ShowDialog();
59
            if (dr == DialogResult.OK)
60
            {
61
                _configuration = copyConfig;
62
            }
63

64
            string s = JsonConvert.SerializeObject(copyConfig);
65
            MessageBox.Show(s);
66

67
            
68
            using (var tf = File.CreateText(fileName))
69
            {
70
                tf.
71
                tf.Write(s);
72
            }
73

74
            //object o = JsonConvert.DeserializeObject(s);
75
            //var jo = (JObject)o;
76

77
            //object o2 = JsonConvert.DeserializeObject(s, typeof(Configuration));
78
       
79
            //configForm = new ConfigurationForm();
80
            //configForm.Configuration = (Configuration)o;
81
            //configForm.ShowDialog();
82
        }
83
    }
84
}

nun tut alles schön und gut.
Aber mein Wille ist, dass ich die Konfiguration in eine Textdatei 
speichere und dann beim nächsten öffnen, auswählen kann welche 
eingestellten konfigurationn ich haben will.
also will ich mehrere Konfigurationen speichern.
Mit meinem Code speichert er nur einen und lädt ihn beim nächsten öffnen 
gleich.

Danke für eure Hilfe

Gruß

Agit
#2735597
Lesenswert?

Agit A. schrieb:
> Aber mein Wille ist, dass ich die Konfiguration in eine Textdatei
> speichere und dann beim nächsten öffnen, auswählen kann welche
> eingestellten konfigurationn ich haben will.
Wo ein Wille ist ist auch ein Weg

> also will ich mehrere Konfigurationen speichern.
> Mit meinem Code speichert er nur einen und lädt ihn beim nächsten öffnen
> gleich.
Dann ändere den Code dahin, daß du auswählen kannst in welche Datei er 
die Konfiguration speichert, oder packe alle Controls in ein großes 
Objekt und speichere davon ein ganzes Array ab.
Beim Hochfahren machst du dann eine Selectbox oder wie das heisst und 
wählst aus den vorhandenen Dateien / Initobjekten die für dich passende 
aus.

Was ist jetzt dein eigentliches Problem?
#2735658
Lesenswert?

hi Udo,

danke für deine schnelle Antwort.
Ja ich weiß das dürfte nicht allzu schwer sein, aber irgendwie habe ich 
gad einen vor dem Brett.

also ich verkürz den obigen Code mal.
1
            if (File.Exists(fileName))
2
            {
3
                string serializedConfiguration = string.Empty;
4
                using (var tf = File.OpenText(fileName))
5
                {
6
                    serializedConfiguration = tf.ReadToEnd();
7
                }
8
                //serializedConfiguration = read.Get_versions("Parameters", "Saved_Configuration");
9
                copyConfig = Configuration.Deserialize(serializedConfiguration);
10
            }

im obigen Code will ich es so haben, dass er abfragt welche Datei er 
laden soll und nicht einfache eine Textdateil laden.



1
  string s = JsonConvert.SerializeObject(copyConfig);
2
            MessageBox.Show(s);
3

4
            using (var tf = File.CreateText(fileName))
5
            {
6

7
                tf.Write(s);
8
            }

hier will ich dass er eine neue Datei anlegt falls ich es will und nicht 
einfach die Datei überschreiben.

Vielen Dank

Gruß

Agit
Gast #2735665
Lesenswert?

Agit A. schrieb:
> im obigen Code will ich es so haben, dass er abfragt welche Datei er
> laden soll und nicht einfache eine Textdateil laden.

http://msdn.microsoft.com/en-us/library/system.windows.forms.openfiledialog.aspx



Agit A. schrieb:
> hier will ich dass er eine neue Datei anlegt falls ich es will und nicht
> einfach die Datei überschreiben.

http://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog.aspx

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren