アプリ版:「スタンプのみでお礼する」機能のリリースについて

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";
}
-------------------------------------------------------

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

A 回答 (2件)

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();
}
    • good
    • 0
この回答へのお礼

ありがとうございます。

>pSender = sender; // 追加

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

お礼日時:2010/10/24 12:07

一番最初の、これ、



object pSender; // 追加

忘れていませんか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/10/24 12:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!