Form2
メイン フォーム ( ) を (再度) インスタンス化する必要はありませんForm1
。
より適切な方法は、テキスト ボックスを含む補助フォームをモーダル ダイアログ ウィンドウとして開き、Form1
ユーザーが入力したテキストにオープナー フォーム ( ) がアクセスできるようにすることForm2
です。
以下に、必要な変更について説明します。
Form2
変更:
1.- 新しいクラス メンバーを追加して、テキスト ボックスに導入される文字列を格納しますtextBox1
。
public String textFromTextBox = null;
2.- OK ボタンのクリック イベント ハンドラーにコードを追加してtextFromTextBox
、テキスト ボックスに導入された値を新しいクラス メンバーに格納します。
3.- 最後に、同じクリック イベント処理コードで、DialogResult
プロパティを に設定しますDialogResult.OK
。
コードは次のForm2
ようになります。
public partial class Form2 : Form
{
[...]
// This class member will store the string value
// the user enters in the text-box
public String textFromTextBox = null;
[...]
// This is the event-handling code that you must place for
// the OK button.
private void button1_Click(object sender, EventArgs e)
{
this.textFromTextBox = this.textBox1.Text;
this.DialogResult = DialogResult.OK;
}
}
Form1
変化
1.-「テキストを入力」というラベルが付いたボタン(実際にはコードにありません)で、Click
イベントハンドラーにForm2
モーダルとして開くために必要なコードを配置しますDialog
。
2.-Form2
のtextFromTextBox
メンバーに格納されている値を回復することにより、それに応じてデータ グリッドのセル値を設定します。
3.- 最後にForm2
インスタンスを破棄します。
Form2 myFormWithATextBox = new Form2();
if (myFormWithATextBox.ShowDialog(this) == DialogResult.OK)
{
this.dataGridView1.Rows[0].Cells[0].Value = myFormWithATextBox.textFromTextBox;
}
myFormWithATextBox.Dispose();
Form1
メイン フォームは単なる補助フォーム コントロールでありForm2
、アプリケーションのフローをあまり制御しないため、メイン フォームをインスタンス化する責任を負わないことを考慮してください。