• 締切済み

[C#]別フォームとの連動について

Visual C# 2008 を使っています。 子フォームのテキストボックスに書かれた内容を、子フォーム上のボタンを押すことで、親フォームのリストボックスに追加する。 といったプログラムを作成しているところです。 しかし、子フォーム上のボタンのクリックイベントハンドラの中に、 親フォームのリストボックスへ内容を追加するプログラムを書くと、「現在のコンテキスト内には存在しません」とエラーが出てきます。 試してみたことは ・子フォームのコントロールをprivateからpublicに変えた ・子フォーム内から親フォームを参照するためのポインタを指定 ・子フォームの定義部に親フォーム参照のためのポインタを指定 です。 誰か解決策を教えていただけないでしょうか? よろしくお願いします。

みんなの回答

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.5

既出の感じがありますが、参考にどうぞ。 http://www.oborodukiyo.info/Forms/VS2008/F-PassDataBetweenForms.aspx

kiyo061
質問者

お礼

ありがとうございました! 参考になりました。

全文を見る
すると、全ての回答が全文表示されます。
  • towad
  • ベストアンサー率80% (4/5)
回答No.4

まずはお役にたてたようで何よりです。 >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);  }

kiyo061
質問者

お礼

ご回答ありがとうございます。 質問文がつたない文章ですみません>< 変数名を変えることで実行できました。 ありがとうございました!!

全文を見る
すると、全ての回答が全文表示されます。
  • towad
  • ベストアンサー率80% (4/5)
回答No.3

回答番号1のソース一式 http://www1.axfc.net/uploader/Sc/so/67264 外部のアップローダーで申し訳ないですが、書庫ファイルの添付が出来ないのであしからず。

kiyo061
質問者

お礼

ダウンロードして実行してみたところ、無事解決できました。 引数にコントロールを入れるという考えがまだなかったので、勉強になりました。C#もっと勉強しますw ご回答本当にありがとうございました!!

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

下記URL参照。 C++/CLIですが、わからんことはないでしょう。

参考URL:
http://cid-07c558f8e11e708f.skydrive.live.com/self.aspx/WillBeRemovedSoon/TwoForm2^_interaction.zip
kiyo061
質問者

お礼

visualC++で実行してみたところ、確かに私のやりたいことが実行できました。 C++も勉強したいと思っていたので、今後の参考にさせていただきます。 ご回答本当にありがとうございました!!

全文を見る
すると、全ての回答が全文表示されます。
  • towad
  • ベストアンサー率80% (4/5)
回答No.1

>子フォームのテキストボックスに書かれた内容を、子フォーム上のボタンを押すことで、親フォームのリストボックスに追加する。 単純にこれを実現したプログラムを作ってみました。 主な処理部分だけ以下に抜粋してあります。 参考になれば良いのですが。 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); } }

kiyo061
質問者

お礼

解決しました! ownerlbを知らなかったので、勉強になりました。 あと、インスタンスの引数内にコントロール名(?)を入れることも知らなかったので、まだまだ知らないことばかりだと実感しました。 ご回答本当にありがとうございました!!

kiyo061
質問者

補足

たびたびすみません。 2つのリストボックスを親フォームのテキストボックス2つ(textbox1,textbox2)にそれぞれ追加しようと思い、 Form2 f2 = new Form2(listBox1); Form2 f2 = new Form2(listBox2); のように記述するとエラーがでました。 1つだけでなく、複数の場合はどう記述したらよいのでしょうか??

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C# 親フォームと子フォームのデータのついて

    こんにちは、 今開発して内容は親フォームからチェックしたリストを子フォームのdatagridviewに自動的に追加したり、 チェックを外したら、子フォームのdatagridviewから登録した項目を削除すること作成しています。 親フォームからチェックした項目(データ)を子フォームの関数に渡しているのですが、子フォームのdatagridviewの更新がしなくて、データも反映されていない状況です。 どうすれば良いでしょうか。ご存知でしたら、教えてください。 どうぞよろしくお願いします。

  • C# 親フォームと子フォーム

    今、C#のプログラミングを作成中です。 内容は、 親フォームのボタンをクリック 子フォームのコンストラクタでエラーチェック エラーがあれば、エラーメッセージを出し、子フォームを閉じる エラーがなければ、子フォームが開く というようにしたいと思っています。 今とまっているのは、エラーがあれば、エラーメッセージを出し、子フォームを閉じるという所です。 どういう風に、子フォームにプログラムしたらよろしいでしょうか? それとも、親フォームにてエラーチェックを行うしか方法はないのでしょうか? 誰か分かられる方がいらっしゃいましたら、教えてください。 お願いいたします。

  • 子フォームから親フォームのオブジェクトを参照したい。

    こんばんわ。 いまVB.Net2005でプログラミングしている者です。 子フォームから親フォームのオブジェクトを参照したいのですが, うまくいきません。 親フォームにListBox1を置き, ここに入力された内容を 子フォームで下記のように参照しようとしました。 Dim 子フォーム As New 子フォーム Label1.Text = 親フォーム.ListBox1.SelectIndex としたのですが, 親フォームでListBox1に0以外のリストを選択したのに, 子側に来ると親フォーム.ListBox1.SelectIndexの値が 0になってしまい,親側での選択内容が反映されません。 どうすれば正しく参照できるでしょうか? 教えてください。よろしくお願いします。

  • 二つのフォームをピタッとさせたい

     親フォームのボタンを押すと、子フォームが出てくるプログラムを作っています。  そのとき子フォームが親フォームにピタッとくっつく様にしたいのですが、どのようにすれば良いのでしょうか?  ご教授お願いします。

  • Visual C#

    Visual C#で、貼り付けたフォーム(テキストボックス・ボタン・リストボックス)があります。 ボタンをクリックしたら、テキストボックスに指定しているフォルダにあるファイルの一覧を、リストボックスに表示させたいのですが、処理方法がわかりません。 お分かりの方がいましたら、教えてください

  • 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

  • リストボックスへの項目追加

    すでに存在するリストボックスに、新しく項目を追加することはできるのでしょうか? VBアプリでよくあるパターンなのですが、以下のような仕組みをWEB上で作ろうと思っています。 (1)親ウィンドウの「参照」ボタンをクリックして、別ウィンドウとして参照リストを表示させる。 (2)参照リストから選択した内容を親ウィンドウのリストボックスに追加する(この時、参照リストのウィンドウ表示を消します)。 なお、参照リストからのリスト選択は複数回行うことができるようにしたいです。 どなたかこの問題を解決できる方いますでしょうか?

  • フォームで入力した値を別のフォームにコピーする

    はじめまして! javascriptでフォームAに入力した内容を ボタンが押されたら同一ページのフォームBに ペーストされるscriptを作りたいのですが そういったスクリプトを公開しているものがあれば 教えていただきたいです。よろしくお願いいたします。 やりたい事: [フォームA]---------------------  お名前:テキスト  性別:ラジオボタン  趣味:セレクトボックス  コメント:テキストエリア  [コピーボタン]←内容をコピーするボタン -------------------------------- ↓コピーボタンが押されたら↓ [フォームB]---------------------  お名前:テキスト  性別:ラジオボタン  趣味:セレクトボックス  コメント:テキストエリア -------------------------------- Aフォームに入力した内容Bフォームに反映される よろしくお願いいたします。

  • C#でボタンクリックをキャンセル

    C#でボタンクリックをキャンセル こんにちは。 C#+.Netです。 ・テキストボックスとボタンを持つフォーム ・ボタンが押された時にテキストボックスの内容をチェックする。 ・OKであれば、そのままフォームを閉じる。 ・NGであればメッセージボックスを表示して、フォームは開いたまま。 というフォームを作成したいのです。 フォームはShowDialogで表示させます。 ボタンのDialogResultには、DialogResult.OKを設定してあります。 ボタンのClickイベントを使って、メッセージボックスを出すことはできたのですが、フォームを開いたままにすることができません。 あるいは、ボタンのDialogResultはNoneのままにして、イベントハンドラ内から、フォームを閉じる方法がないかと思ったのですが、それもわかりません。 どのようにすればよいのでしょうか?よろしくお願いします。

  • C#です。リストボックスの項目をダブルクリックすると、別のフォーム出現するには

    C#です。初心者です。 リストボックスの項目をダブルクリックすると、別のフォーム出現するようにしたいのですが。 どのようにプログラムを書いたらできるのでしょうか?? 教えてくれませんか?? お願いします。