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、アプリケーションのフローをあまり制御しないため、メイン フォームをインスタンス化する責任を負わないことを考慮してください。