none
C# - string aus Form1 in Form2 verwenden? RRS feed

  • Frage

  • Hallo,

    Ich habe folgendes Problem, bei dem Ich hilfe beötige.

    Ich habe ein Projekt welches Form1 und Form2 beihnaltet.

    In Form1 wird eine zufällige GUID erzeugt und in den string "GuidString" kopiert.

    Guid g = Guid.NewGuid();                                           
    string GuidString = Convert.ToBase64String(g.ToByteArray());
    GuidString = GuidString.Replace("=", "");
    GuidString = GuidString.Replace("+", "");

    Dieser string wird an die Email des Benutzers gesendet und Form2 öffnet sich.

    Der Benutzer wird dann aufgefordert die GUID in Form2 einzugeben.

    Dies wollte ich wie folgt lösen:

    if (textBox1.Text == GuidString)
    {
         //text stimmt
    }
    else
    {
         //text falsch
    }

    Doch der String aus Form1 wird in Form 2 nicht erkannt.

    Danke im Vorraus.

    MFG

    ~Silentkilll


    Freitag, 1. März 2013 20:53

Antworten

  • Hi,

    wie sollte das auch gehen? Laut dem, was Du schreibst, ist das eine lokale Variable in einer Methode.

    Wenn Du die Variable übergreifend haben willst, erstell dir eine statische Klasse und hinterleg den Wert dort.

      http://msdn.microsoft.com/de-de/library/79b3xss3.aspx

    Alternativ kannst Du auch einfach in deiner Form2 eine öffentliche Eigenschaft erstellen und die dann von Form1 aus beim erstellen und Öffnen der zweiten Form übergeben.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Freitag, 1. März 2013 21:09
    Moderator
  • Eine dritte Variante ist GuidString als ein Feld drin Form1 abzulegen und Form2 die Instanz von Form1 zu übergeben. Das lohnt sich aber in diesem Fall kaum. Da würde auch nur das Feld selbst reichen, also in etwa so wie Stefans 2. Vorschlag.

    class Form1 : Form
    {
        public string GuidString{get;private set;}
        void DoSome()
        {
            GuidString = "...";
            Form2 f = new Form2(this);//Alternativ nur GuidString
            f.ShowDialog();
        }
    }
    
    class Form2 : Form
    {
        public string GuidString;
        public Form2(Form1 frm) //Alternativ den GuidString verlangen
        {
            this.GuidString = frm.GuidString;
        }
    }


    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets

    Freitag, 1. März 2013 21:30
    Moderator

Alle Antworten

  • Hi,

    wie sollte das auch gehen? Laut dem, was Du schreibst, ist das eine lokale Variable in einer Methode.

    Wenn Du die Variable übergreifend haben willst, erstell dir eine statische Klasse und hinterleg den Wert dort.

      http://msdn.microsoft.com/de-de/library/79b3xss3.aspx

    Alternativ kannst Du auch einfach in deiner Form2 eine öffentliche Eigenschaft erstellen und die dann von Form1 aus beim erstellen und Öffnen der zweiten Form übergeben.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Freitag, 1. März 2013 21:09
    Moderator
  • Eine dritte Variante ist GuidString als ein Feld drin Form1 abzulegen und Form2 die Instanz von Form1 zu übergeben. Das lohnt sich aber in diesem Fall kaum. Da würde auch nur das Feld selbst reichen, also in etwa so wie Stefans 2. Vorschlag.

    class Form1 : Form
    {
        public string GuidString{get;private set;}
        void DoSome()
        {
            GuidString = "...";
            Form2 f = new Form2(this);//Alternativ nur GuidString
            f.ShowDialog();
        }
    }
    
    class Form2 : Form
    {
        public string GuidString;
        public Form2(Form1 frm) //Alternativ den GuidString verlangen
        {
            this.GuidString = frm.GuidString;
        }
    }


    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets

    Freitag, 1. März 2013 21:30
    Moderator
  • Hallo Silentkilll,

    Wenn Dir die Antworten geholfen haben, dann bitte markiere diese als Antwort.

    Danke und Gruss,

    Ionut

    Freitag, 8. März 2013 16:29
    Moderator