[C#] Passwort Generator - Text aus 2. Form in die 1. Form

Timorix

Grünschnabel
Ich habe ein Problem bei folgendem hergehen:

Ich klicke auf einen Button "Generieren" in der Hauptform (frmPasswortManager) und dann öffnet sich eine Form2 (frmPWGen).
Dort wird dann in der Textbox (txtGen) ein String generiert welches das Passwort sein soll.
Nun klicke ich auf "OK" in der Form2 und dann soll der Text in der Textbox (txtGen) in eine Textbox in der Hauptform geschrieben werden.

Ich habe leider keine Ahnung wie ich das hinbekommen könnte. Ich habe kein Problem damit, eine Variable in die Form2 zu übergeben, jedoch dann wieder von Form2 zu lesen.


Es handelt sich um die Visual Studios WinForms.

Könnt ihr mir helfen?
 
Zuletzt bearbeitet:
Du hättest auch einfach antworten statt löschen können...
C# gehört nicht hierher. Verschoben.

Übergib die Hauptform per Konstruktor an die Unterform, dort als Klassenvariable abspeichern.
Darüber dann bei "OK" auf die Hauptform zugreifen.
 
Vielen Dank für deine Antwort.
Ich werde mich in dem Bereich informieren und es so versuchen.

Edit:
So das Problem wurde nun behoben.

Falls ihr das gleiche Problem habt:
In dem Button von der Form1 (Hauptform) steht dann bei dem aufruf der 2. Form dieser Code:
Code:
private void cmdGenerieren_Click(object sender, EventArgs e)
        {
            PWGen PWGen = new PWGen(this);
            PWGen.Show();
        }
Erklärung: Der 2. Form wird also die Form von der jetzigen (die Hauptform) form übergeben:
PWGen PWGen = new PWGen(this);
this = Diese Form.

Dann in der 2. Form über dem Konstruktor:
Code:
frmManager form;
frmManager ist die Hauptform.

Direkt dadrunter:
Code:
public PWGen(frmManager form)
        {
            InitializeComponent();
            this.form = form;
        }
Erklärung: Dies funktioniert wie eine normale public Methode wo man z.B Werte errechnen lässt oder sonst was.
this.form = form:
Die Form, die über dem Konstruktor deklariert wurde wird die Form zugewiesen, die wir zuvor mit dem Button übergeben haben:
PWGen FormMan = new PWGen(this);

Außerdem muss noch in der Hauptform eine public Methode geschrieben werden, damit die Änderungen von der 2. Form geschehen können. In meinem Fall:
Code:
public string SetPass
        {
            set
            {
                txtPass.Text = value;
            }
        }
Erklärung: Ich kann nun in meiner 2.Form den Wert in der Textbox (txtPW) der Textbox (txtPass) von der Hauptform zuweisen.

Und dann wieder zurück zur 2. FOrm:
Code:
private void cmdSubmit_Click(object sender, EventArgs e)
        {
            form.SetPass = txtPW.Text;
        }
Erklärung: form.SetPass:
"form" ist die Hauptform und hier wird der public Methode SetPass der Stringwert von txtPW.Text angehängt.

Man könnte es auch so sehen:
Code:
public string SetPass(string value)
{
    txtPass.Text = value;
}

Wieso man jedoch jetzt set { } verwenden muss, kann ich euch nicht sagen...


Ich hoffe das die Erklärungen einigermaßen in Ordnung sind :)
 
Zuletzt bearbeitet:
Man muss nicht set{} verwenden, die andere Variante geht auch.
Danke für die ausführliche Beschreibung!
 
Oh das ist ja super, das ich auch die andere Variante hätte nehmen können. Ich hatte mir das nur gedacht, da ich in verschiedenen Tutorials die set { } Variante gesehen hab.

Vielen Dank :)
Sry für die PM, dachte man schreibt hier [GELÖST] hinter Problemen, aber da hatte ich noch ein anderes Forum offen.

Naja vielen Dank für deine Antwort ^^
 
Zurück