2016-04-14 20 views
0

私はプログラミングの初心者です。私の知識が本当に不十分なようであれば、私は言い訳をします。私は私の学校のためのC#プロジェクトをやっていると私は私の宿題の問題を抱えている、ここで感謝System.Windows.Forms.dllで 'System.ArgumentException'の未処理の例外が発生しました

いくつかのコード:

using System; 
using System.Drawing; 


private void button1_Click(object sender, EventArgs e) 
{ 
    child frm2 = new child(); 
    frm2.ShowDialog(); 


    int color = 0; 
    int i = 0; 
    Random rnd = new Random(); 
    i = rnd.Next(51); 

    frm2.BackColor = Color.FromArgb(i*color); 
    frm2.ShowDialog(); 
    if (color == 5) 
    { 
     color = 0; 
    } 
} 
+0

最初のShowDialog()を削除してください... – Steve

+0

私の友人に感謝しますが、まだ動作しません。 – horadus

+0

スタックトレースをここに掲示して、例外の原因となっている行を表示します。 –

答えて

1

問題は、この行です:

frm2.BackColor = Color.FromArgb(i*color); 

i変数が0(ゼロ)なので、結果として得られる色は透明で、取得する正確な例外メッセージは次のようになります。

System.Windows.Forms.dllで 'System.ArgumentException'型の未処理の例外が発生しました。

追加情報:コントロールは透明な背景色をサポートしていません。 、それを修正icolor変数のためのあなたのロジックを修正して、次のように使用するためには

frm2.BackColor = Color.FromArgb(255, Color.FromArgb(i * color)); 

生成された色から透明度を削除 - 参照Color.FromArgb Method (Int32, Color)

+0

また、変数の色を0以外の値に設定する必要があります – GreatJobBob

関連する問題