みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

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

解決済みの質問

C# 親フォームで指定した値を子フォームで表示する

表題の件がうまくできず、困っています。

やりたいことは
親フォームのリストボックスで選択した
インデックス番号をshouDialog()で立ち上げた子フォーム側の
textBoxに表示したいんですが、
何も表示されず困っています。

namespace test
{
public partial class Form1 : Form
{
//リスト変数
public string listChoise;


[STAThreadAttribute]
static void Main()
{
Application.Run(new Form1());
}


public Form1()
{
InitializeComponent();
}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
listChoise = listBox1.SelectedIndex.ToString();
MessageBox.Show(listChoise);//←ここでは値がでます
}

    private void button1_Click(object sender, EventArgs e)
{

//子フォームを立ち上げる
Form2 form = new Form2();
form.ShowDialog();
}
}
}

↓Form2クラス
namespace test
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();

//リスト選択変数
Form1 list = new Form1();
textBox2.Text = list.listChoise;
}
}
}

この二つのクラスです。
とくにエラーはありません。

ちなみに
>>>//リスト変数
>>>public string listChoise;
の部分を
public string listChose = "aaaaa";

としておくと、
子フォームのテキストボックスに"aaaaa"と表示されているようなんですが、
>>>listChoise = listBox1.SelectedIndex.ToString();
の値がちゃんと子フォームの方で受け取れていないようです。
結果はなにもひょうじされません。
子フォームの方で、
MessageBox.Show("listChoise");をしても
何も表示されません。

どんな原因が考えられますでしょうか。
よろしくお願いします。

環境:visualC# 2008 Express Edition

投稿日時 - 2008-06-17 20:23:48

QNo.4108442

すぐに回答ほしいです

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

子ダイアログから 親をアクセスしたいなら その親を取得する方法を指定しましょう

子ダイアログを表示(実行)する前に 親側から子側にデータを受け渡すなら
子側に フィールド準備しておいてそのフィールド設定してから ShowDialogを実行する
たとえな Form2側に
public string myEditData;
といったフィールドを準備して

Form2 form = new Form2();
frm.myEditData = listChoise;
form.ShowDialog();
などとして実行

Form2のLoadイベントで
textBox2.Text = myEditString;
といった具合に初期化する

--------------------------------
子側から親にアクセスするなら
frm.ShowDialog( this );
といった具合に親のオブジェクトを渡す

子側のLoadイベントで
textBox2.Text = ((Form1)this.Owner).listChoise;
といった具合に初期化してみましょう

投稿日時 - 2008-06-17 21:15:41

お礼

ご回答ありがとうございました。
初期化がしっかりとできていないみたいでした。

Loadイベントに初期化しなければならたかったんですね。
無事値が取得できました。
ありがとうございます。

投稿日時 - 2008-06-17 21:47:31

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

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

回答(1)

あなたにオススメの質問