Fehler beim Laden der gespeicherten Eigenschaften eines beliebigen Controls

Reticent

Erfahrenes Mitglied
Hallo Leute,


ich speichere alle eigenschaften eines belibigen Controls in eine Binary Datei. Später lade ich diese in eine Textvariable und möchte ein Control mit diesen Eigenschaften generieren. Dazu konvertieren ich die als Text gespeicherten Werte in das entsprechende Format. Nach hunderten von Stunden habe ich gefunden wie man einige Typen konvertiert, aber habe noch Problemme mit Point, oder Color usw. Halt alle die nicht nur als Wert gespeichert sind, sondern <Text> Wert, oder so. (z.B. Color [White]).

Beispielweise, wenn hier die Eigenschaft mit einem Point kommt, dann geht die konvertierung nicht mehr, weil gespeichert sieht es so aus "{X=0,Y=0}", erwartet wird aber "0,0".
mein Code(momentan nur für Label):
Code:
        private void LoadControls(ArrayList[][] deserobj)
        {
            Label tmpLbl = new Label();
            PropertyInfo[] pi = tmpLbl.GetType().GetProperties();
            
            for (int counter = 0; counter < deserobj.Length; counter++)
            {
                foreach (PropertyInfo p in pi)
                {
                    if (p.GetValue(tmpLbl, null) != null)
                    {
                        PropertyInfo cpi = tmpLbl.GetType().GetProperty(p.Name);
                        object tmpValue = null;
                        if (p.GetValue(tmpLbl, null).GetType().IsEnum)
                        {
                            tmpValue = System.Enum.Parse(p.GetValue(tmpLbl, null).GetType(), (string)deserobj[counter][1][deserobj[counter][0].IndexOf(p.Name)]);
                            if (p.CanWrite)
                                p.SetValue(tmpLbl, (p.GetValue(tmpLbl, null) == null) ? null : tmpValue, null);
                        }
                        else
                        {
                            tmpValue = deserobj[counter][1][deserobj[counter][0].IndexOf(p.Name)];
                            if (p.CanWrite)
                                p.SetValue(tmpLbl, TypeDescriptor.GetConverter(p.GetValue(tmpLbl, null).GetType()).ConvertFromInvariantString((string)tmpValue), null);
                        }
                    }
                }
                pnlViewHost.Controls[0].Controls[0].Controls["Form1"].Controls.Add(tmpLbl); //hier einfach ein Control meiner Form zuweisen.
          }

Wie kann ich das am besten hinbekommen? Hat jemand Erfahrung damit?
 
Zuletzt bearbeitet: