2011-02-08 3 views
0

ColorDialogから返された色の値を別のフォームに割り当てようとしています。C#でColorDialog.Colorを別のフォームに割り当てる方法はありますか?

フォーム1は、 '配置順序'(コントロールの束を含む新しいフォームを作成)と '色の選択'(配置順序フォームの色を変更できるようにする)の2つのボタンで構成されます。したがって、Place OrderとSelect Colorを同時に開くことはできません。

したがって、私は何らかの形でPlace OrderフォームのBackColorプロパティを参照して、ColorDialog.ColorをPlace Orderフォームに割り当てることができるように2つのボタンを持つフォームにする必要があります。

Form1のコード:

private void SelectColor_Click(object sender, EventArgs e) 
{ 
    if (colorDialog1.ShowDialog() == DialogResult.OK) 
    { 
     string color = Convert.ToString(colorDialog1.Color); 
     MessageBox.Show(color); 
     this.BackColor = colorDialog1.Color; // BackColor is only accessible for this form 
    } 
} 
+0

を、 Form1のみを表示し、Form2はどこにロードしますか? –

+3

実際の質問は、「注文の注文」フォームの「色の選択」ボタンがなぜではないのですか?このフォームに直接影響することを考慮すると、物理的にそのフォームに配置されていないことはあまり意味がありません。これにより、選択した色を示す変数または「Place Order」フォームのインスタンスをメモリに保持する必要がないため、作業が大幅に簡単になります。 –

答えて

0
if(colorDialog1.ShowDialog() != DialogResult.OK) {return;} 

form2 f = new form2(); 
f.BackColor = colorDialog1.Color; 
f.Show(); 
1

あなたはこれをやっている方法、あなたは色を保持する変数を維持する必要があります。その後、あなたの新しいフォーム(注文発注ボタン)を起動コードの中で、この入れ

//Declare this private variable to hold the color selected by the user 
private System.Drawing.Color selectedcolor;  

private void SelectColor_Click(object sender, EventArgs e) 
{ 
    if (colorDialog1.ShowDialog() == DialogResult.OK) 
    { 
     selectedcolor = colorDialog1.Color; // BackColor stored in variable 
    } 
} 

:このようにそれを行うこんにちは、あなたの質問を編集し、他のフォームがどこにあるかを説明してください

private void PlaceOrder_Click(object sender, EventArgs e) 
{ 
    //I am assuming PlaceOrderForm is the name of the class of your other form 
    PlaceOrderForm frm = new PlaceOrderForm(); 
    //Initialize other properties and events,etc. 
    //Then make its background color as selected by user 
    if(selectedcolor != null) frm.BackColor = selectedcolor; 
} 
+1

これは正しいですが、なぜ選択された色を 'string'に変換するコードが表示されたのか分かりません。私はあなたが今コメントした 'MessageBox'呼び出しのためだと思います。おそらくそれの上の行にもコメントを付けるべきです。 –

+0

ええ、私はそれをコメントするのを忘れてしまった。 –

関連する問題