Variable soll gespeichert bleiben, auch wenn windows form geschlossen wird..!



  • Hi,
    wie kann ich denn in c# eine variable die zu einer windows form gehört(sagen wir form1) so speichern, dass wenn man diese Form1 schliesst (Form1 ist ist nicht die StartForm), diese Variable trotzdem gespeihcert bleibt, bis der Nutzer das Hauptprogramm schliesst.
    Beispiel:

    //Form1
    namespace test
    {
       public partial class Form1 : Form
        {
           int count;
           public Form1(int ct)
               {
                 InitializeComponent();
                 count = ct;
               }
           string str;
           //Wenn das erste mal Form1 geöffnet wird, bekommt str einen Wert
           //Dieser soll beim nächsten Öffnen dieses Fensters, vorhanden sein
    
           private void Form1_Load(object sender, EventArgs e)
            {
              if(count==1){str = "Hey"}
              else{MessageBox.Show(str);}
    
        }
    }
    

    und

    namespace test
    {
       public partial class StartForm : Form
        {
           public StartForm(){InitializeComponent();}
           int count = 0;
    
            private void button1_Click(object sender, EventArgs e)
            {
               count++;
               Form1 frm = new Form1(count);
               frm.show();
    
            }    
        }
    }
    

    Also die Variable soll in Form1 gespeichert bleiben, bis der Nutzer das Hauptptogramm beendet.
    Wie mache ich nur das am Besten..?



  • Ich meine:
    ...Also die Variable "str" soll in Form1 gespeichert bleiben, bis der Nutzer das Hauptptogramm beendet.
    Wie mache ich nur das am Besten..?



  • In eine Datei schreiben.



  • Übernimm doch beim schließen den Inhalt der Variable auf das mainForm? Zum Beispiel als Property, die nach dem Schließen auf eine Property des mainForm gesetzt wird.



  • Gar nicht kannst du das. Weil beim schließen das Form disposed wird, und damit seine Member, wenn sie das nich sogar schon vorher wurden.
    Am besten ist du hängst dich im main Form an das FormClosing -Event des Form1 ran und übergibst da die Variable einfach mit rüber.



  • static...



  • Wenn denn der Wert für alle "Forms" der gleiche ist, dann ist static natürlich die richtige Variante, wenn der Wert aber objektabhängig ist, eher nicht.



  • Firefighter schrieb:

    Wenn denn der Wert für alle "Forms" der gleiche ist, dann ist static natürlich die richtige Variante, wenn der Wert aber objektabhängig ist, eher nicht.

    Nicht für alle Forms sondern nur für alle Instanzen von Form1.

    3iner schrieb:

    //Wenn das erste mal Form1 geöffnet wird, bekommt str einen Wert
    //Dieser soll beim nächsten Öffnen dieses Fensters, vorhanden sein

    Das entspricht genau der Definition von static.



  • DANKE an Alle..!

    Mit static wurde mein prolem gelöst.!



  • @ loks

    Ja klar nicht alle Forms, hab ich etwas blöd formuliert. Danke 😉


Anmelden zum Antworten