こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C#でテキストボックスをクリック→フォームが開く→フォームで設定した値

C#でテキストボックスをクリック→フォームが開く→フォームで設定した値を元のテキストボックスに入力

こんな感じのことをC#でやりたいのですがよくわからないので教えてください。

1. 親をForm1、子をForm2とします

2. Form1のTextBox1をクリックするとForm2が開いきます

3. Form2で設定した値をForm2の「入力」ボタンを押すとForm2が閉じてTextBox1に値が入力されます

というものです。
ここで、textBoxは「クリックしたコントロール名を取得してForm2に渡したい」のです。
テキストボックスがたくさんあるので、textBox1とか決まった名前ではありません。
この部分がわからないのです。

-------------------------------------------------------
Form1:
private void textBox1_Click(object sender, EventArgs e)
{
 Form2 fromItem = new Form2(sender);
 DialogResult deRet = fromItem.ShowDialog();
}

Form2:
public Form2(object sender)
{
 InitializeComponent();
 object pSender = sender;
}

private void button_input_Click(object sender, EventArgs e)
{
 ((System.Windows.Forms.TextBox)pSender).text = "hoge";
}
-------------------------------------------------------

この程度しかわかりません。
正しい方法を教えてください。よろしくお願いいたします。

投稿日時 - 2010-10-24 01:04:16

QNo.6271142

すぐに回答ほしいです

質問者が選んだベストアンサー

Form2の側を少し直します。

object pSender; // 追加

public Form2(object sender)
{
InitializeComponent();
pSender = sender; // 追加
//object pSender = sender; // 削除。これだとpSenderが他から見れません
}

private void button_input_Click(object sender, EventArgs e)
{
// textじゃなくてText
((System.Windows.Forms.TextBox)pSender).Text = "hoge";

//以下は追加で試してみました。
//MessageBox.Show(((System.Windows.Forms.TextBox)pSender).Name);
//MessageBox.Show(((System.Windows.Forms.TextBox)pSender).Parent.Name);
//this.Close();
}

投稿日時 - 2010-10-24 03:51:51

お礼

ありがとうございます。

>pSender = sender; // 追加

こうすると「名前'pSender'は現在のコンテキスト内に存在しません」というエラーが出てしまいます…。

投稿日時 - 2010-10-24 12:07:18

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

一番最初の、これ、

object pSender; // 追加

忘れていませんか?

投稿日時 - 2010-10-24 12:12:09

お礼

あ!忘れていました!
ここで宣言するのですね。無事うまくできました。
この度はどうもありがとうございました。

投稿日時 - 2010-10-24 12:19:48

あなたにオススメの質問