C# で Form2からForm1のtextBox1の値を変更する

投稿日: 2010-01-29 22:05:12

モーダルで表示したForm2の値をForm1に反映させる fom1form2.jpg Form1内のtextBox1は "Form1.Designer.cs"にあるとおり、private なのでForm2から参照できない。
private System.Windows.Forms.TextBox textBox1;
そのためForm1にtextBox1.Textにアクセスするpublicな変数を用意してForm2から参照させる。get , set はアクセサ。 ■Form1.cs
public partial class Form1 : Form { // Form2 public Form2 cForm2; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // Form2 の新しいインスタンスを生成する cForm2 = new Form2(this); // Form2 をモーダルで表示する cForm2.ShowDialog(); } private void Form1_Load(object sender, EventArgs e) { } public string TextBox1Text { get { return textBox1.Text; } set { textBox1.Text = value; } } }
■Form2.cs
public partial class Form2 : Form { //Form1の宣言 Form1 cForm1; public Form2(Form1 cForm1) { InitializeComponent(); // cForm1のインスタンスを作成 this.cForm1 = cForm1; textBox1.Text = this.cForm1.TextBox1Text; } private void button1_Click(object sender, EventArgs e) { cForm1.TextBox1Text = textBox1.Text; } public string TextBox1Text { get { return textBox1.Text; } set { textBox1.Text = value; } } }