Zapisywanie i odczytywanie obiektów

0

Witam drogich forumowiczów!

Siedzę w C# od jakiegoś roku i staram się rozgryźć windows forms. Większość rzeczy nie sprawia mi trudności poza zapisywaniem i odczytywaniem obiektów, a mianowicie chodzi i o taką sytuację:

mam mały programik, form który zawiera jeden button i flowlayoutpanel, gdy nacisnę button spawnuje taką oto klasę


public Class Txtbox
{
  Label lb = new Label();

  public void settings()
  { 
   //ustawienia czcionki i kolor, tekst dla labela
  }
} 

label dodawany jest to flowlayoutpanel i wszystko pięknie, tylko... jak sprawić żeby po zamknięciu programu i ponownym uruchomieniu flowlayoutpanel zachowywał wszystkie labele jakie stworzę?

próbowałem serializacji binary, ale wywalało mi błędy ".. is not marked as serializable", tak więc "leżę i kwiczę", byłbym dozgonnie wdzięczny gdyby ktoś powiedział mi jak to ugryźć!

Z góry dziękuję i liczę na wyrozumiałość.

1

Odpowiedź to serializacja. Wyrzuca ci błąd ponieważ klasa którą chcesz zserializować nie posiada atrybutu o tym, że może zostać zserializowana. W zależności od tego, jaki rodzaj serializacji chcesz użyć musisz dać odpowiedni atrybut do klasy. Np.


[Serializable]
class ASDFG
{
    public ASDFG()
   {
   }
}

Teraz klasa może zostać zserializowana

0

NeuroXiq dzięki za uwagę!

co do samego problemu to rozwiązanie chyba nie jest aż tak proste ponieważ po dodaniu [Serializable] nadal wyskakuje błąd "... is not marked as serializable"

2

Oczywiście oznaczyłeś tym atrybutem wszystkie klasy, które chcesz zapisać do pliku, oraz wszystkie inne klasy, z których te zapisywane korzystają?

0

somekind - wydaje mi się, że wszystko co potrzebne oznaczyłem, z resztą cały kod widać na załączniku. Błąd jest zawsze taki sam "formatter.Serialize(fileStream, ps); ... is not marked as serializable".

0

Czy Label, Padding i Size też są Serializable?

0

somekind

Po Twojej wypowiedzi wnioskuję, że robię jakiś oczywisty błąd, ale jako nowicjusz nie jestem w stanie go zauważyć? rozumiem, że Label,Padding i Size powinny zostać odpowiednio oznaczone? ale nie mam pojęcia w jaki sposób.

1

Atrybutem Serializable. Tylko to nie są chyba Twoje klasy, więc nie zrobisz tego, a porada @NeuroXiq jest nieadekwatna do Twojego problemu.

To co możesz zrobić, to zapisać konkretne wartości różnych właściwości swoich kontrolek. Żeby nie wymyślać własnego formatu pliku, możesz użyć tego, w czym wspomoże Cię Visual Studio: http://www.codeproject.com/Ar[...]dows-Forms-User-Settings-in-C

0

Powiem szczerze, że w takim wypadku to nie wiem co zrobić. Można by było bawić się w jakąś serializację do xml, która zapisywała by wszystkie pola klasy label, a potem poprzez jakąś metodę, robić to ręcznie przez parsowanie każdego pola w pliku do odpowiedniego pola w label. Z tym to trochę więcej by zabawy było ale może ktoś zna lepszy sposób.
Pozdr.

0

Dzięki chłopaki, jednak jak widać sprawa nie jest zbyt prosta i chyba przerasta to moje teraźniejsze możliwości programistyczne... muszę znaleźć jakąś alternatywę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0