Den ene måde du kan gøre det på er at gøre din textbox public, ved at gå ind i din designer (Form2.Designer.cs) og ændre:
private System.Windows.Forms.TextBox textBox1;
til:
public System.Windows.Forms.TextBox textBox1;
Den anden (hvilket jeg benytter), er at lave en public function i din anden form der returnérer textbox'ens indhold, således:
public string GetText()
{
return textBox1.Text;
}
Og så på din første form:
Form2 newForm = new Form2();
newForm.ShowDialog();
MessageBox.Show("Du skrev " + newForm.GetText() + " på form 2!");
Du kan selvfølgelig også lave en function der returnérer hele textboxen hvis du skal tilgå mange egenskaber i texboxen end bare text.
Således:
public TextBox GetTextBox()
{
return textBox1;
}
Og på din form1:
Form2 newForm = new Form2();
newForm.ShowDialog();
MessageBox.Show("Du skrev " + newForm.GetTextBox().Text + " på form 2!");
Hvordan du gør er helt op til dig selv. Smag og behag.
Hvis du har en login form, hvor folk skal skrive et navn/kode, så kunne du lave funktionerne således:
public string GetUsername()
{
return txtUsername.Text;
}
public string GetPassword()
{
return txtPassword.Text;
}
Du kunne også bruge en struct, hvilket måske er en fordel ved mange ting der skal returnéres.
public struct LoginInfo
{
public string Username;
public string Password;
public LoginInfo(string username, string password)
{
this.Username = username;
this.Password = password;
}
}
public LoginInfo GetLoginInfo()
{
return new LoginInfo(txtUsername.Text, txtPassword.Text);
}
Og så på din form1:
Form2 newForm = new Form2();
newForm.ShowDialog();
Form2.LoginInfo LI = newForm.GetLoginInfo();
MessageBox.Show("Du skrev " + LI.Username + " og " + LI.Password + " på form 2!");
Jeg anbefaler så at du får din OK knap på din form 2 til at sætte formens DialogResult til DialogResult.OK, for at fortælle din form1 at brugeren valgte OK, og ikke Cancel, eller bare lukkede vinduet.
Du kan enten sætte DialogResult som en egenskab på knappen i design-time,
eller når der klikkes på knappen. Jeg foretrækker sidstnævnte.
Så koden til din OK knap på Form2:
private void button1_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
}
Bemærk, at når DialogResult bliver sat, så lukker formen.
Når du så på din form1 kalder formen så kan du lave et tjek på ShowDialog() for at se om brugeren valgte OK, eller annullérede:
if (newForm.ShowDialog() == DialogResult.OK)
{
//Brugeren valgte OK
}
else
{
//Brugeren lukkede vinduet eller trykkede på en knap der satte DialogResult til noget andet end DialogResult.OK
}
Håber det gav svar på dit spørgsmål.