- 締切済み
[C#]別フォームとの連動について
Visual C# 2008 を使っています。 子フォームのテキストボックスに書かれた内容を、子フォーム上のボタンを押すことで、親フォームのリストボックスに追加する。 といったプログラムを作成しているところです。 しかし、子フォーム上のボタンのクリックイベントハンドラの中に、 親フォームのリストボックスへ内容を追加するプログラムを書くと、「現在のコンテキスト内には存在しません」とエラーが出てきます。 試してみたことは ・子フォームのコントロールをprivateからpublicに変えた ・子フォーム内から親フォームを参照するためのポインタを指定 ・子フォームの定義部に親フォーム参照のためのポインタを指定 です。 誰か解決策を教えていただけないでしょうか? よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- oboroxx
- ベストアンサー率40% (317/792)
既出の感じがありますが、参考にどうぞ。 http://www.oborodukiyo.info/Forms/VS2008/F-PassDataBetweenForms.aspx
- towad
- ベストアンサー率80% (4/5)
まずはお役にたてたようで何よりです。 >2つのリストボックスを親フォームのテキストボックス2つ(textbox1,textbox2)にそれぞれ追加しようと思い、 > >Form2 f2 = new Form2(listBox1); >Form2 f2 = new Form2(listBox2); > >のように記述するとエラーがでました。 ご質問の文章は ・親フォームに2つのリストボックスを追加する ・子フォームを2つにし、それぞれのテキストボックスの内容を上記リストボックスに反映させる と解釈してよろしいでしょうか? 上の記述では、同じ変数f2を2回定義しているのでエラーが発生しているのだと思います。なので変数名を変えてやれば解決します。 public Form1() { InitializeComponent(); Form2 f2_1 = new Form2(listBox1); Form2 f2_2 = new Form2(listBox2); f2_1.Show(this); f2_2.Show(this); }
お礼
ご回答ありがとうございます。 質問文がつたない文章ですみません>< 変数名を変えることで実行できました。 ありがとうございました!!
- towad
- ベストアンサー率80% (4/5)
回答番号1のソース一式 http://www1.axfc.net/uploader/Sc/so/67264 外部のアップローダーで申し訳ないですが、書庫ファイルの添付が出来ないのであしからず。
お礼
ダウンロードして実行してみたところ、無事解決できました。 引数にコントロールを入れるという考えがまだなかったので、勉強になりました。C#もっと勉強しますw ご回答本当にありがとうございました!!
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
下記URL参照。 C++/CLIですが、わからんことはないでしょう。
- 参考URL:
- http://cid-07c558f8e11e708f.skydrive.live.com/self.aspx/WillBeRemovedSoon/TwoForm2^_interaction.zip
お礼
visualC++で実行してみたところ、確かに私のやりたいことが実行できました。 C++も勉強したいと思っていたので、今後の参考にさせていただきます。 ご回答本当にありがとうございました!!
- towad
- ベストアンサー率80% (4/5)
>子フォームのテキストボックスに書かれた内容を、子フォーム上のボタンを押すことで、親フォームのリストボックスに追加する。 単純にこれを実現したプログラムを作ってみました。 主な処理部分だけ以下に抜粋してあります。 参考になれば良いのですが。 public partial class Form1 : Form { public Form1() { InitializeComponent(); Form2 f2 = new Form2(listBox1); f2.Show(this); } } public partial class Form2 : Form { private ListBox ownerlb; public Form2(ListBox lb) { InitializeComponent(); ownerlb = lb; } private void button1_Click(object sender, EventArgs e) { ownerlb.Items.Add(textBox1.Text); } }
お礼
解決しました! ownerlbを知らなかったので、勉強になりました。 あと、インスタンスの引数内にコントロール名(?)を入れることも知らなかったので、まだまだ知らないことばかりだと実感しました。 ご回答本当にありがとうございました!!
補足
たびたびすみません。 2つのリストボックスを親フォームのテキストボックス2つ(textbox1,textbox2)にそれぞれ追加しようと思い、 Form2 f2 = new Form2(listBox1); Form2 f2 = new Form2(listBox2); のように記述するとエラーがでました。 1つだけでなく、複数の場合はどう記述したらよいのでしょうか??
お礼
ありがとうございました! 参考になりました。