• ベストアンサー

色の数値を別のフォームに引き渡したいです。

色の数値を別のフォームに引き渡したいです。 Random rnd = new Random(); int red = rnd.Next(256); int green = rnd.Next(256); int blue = rnd.Next(256); このint redやint greenを新しく開くフォームにも同じ値を呼び出したいのですが、、、 よろしくお願いします。 開発環境はVC#2008です。

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

  • ベストアンサー
回答No.1

 別のフォームというのは何ですか?  現在のフォームから起動するダイアログとか子ウインドウか、それとも別のアプリケーションのフォームなのか。  現在のフォームから起動するのなら、起動するフォームのコンストラクタなりメソッドを利用して受け渡しすれば良いだけです。あるいは、専用のクラスを作ってpublicのstaticプロパティに設定することで共通のデータとしてアクセスすることも出来ます。  別のアプリに受け渡しする場合、現在のアプリから子プロセスとして起動する場合はコマンドライン引数などを用いて渡す。完全に独立して起動するアプリなら、何らかのプロセス間通信の手法を用いる必要があります。  例えば、Form2をダイアログとして開く場合 class Form2 : Form { int red; int green; int blue; // (前略) // 色を設定するメソッド public void SetColor(int red, int green, int blue) { this.red = red; this.green = green; this.blue = blue; } // (後略) } class Form1 : Form { // (前略) // Form2を起動する処理 private void OpenDialog() { // どこでもいいけど、色を生成する Random rnd = new Random(); int red = rnd.Next(256); int green = rnd.Next(256); int blue = rnd.Next(256); // Form2を生成 Form2 dlg = new Form2(); // 色を渡す dlg.SetColor(red, green, blue); // Form2を開く dlg.ShowDialog(); } // (後略) }

LEN951753
質問者

お礼

説明不足申し訳ないです。。。例えていただいた通りの質問です。 this.red = red; this.green = green; this.blue = blue; の部分を含めたらうまくいきました。 丁寧にご説明していただき、助かりました。ありがとうございます。