2016-04-14 2 views
0

Я действительно новичок в программировании, поэтому извините меня, если мои знания кажутся действительно неадекватными. Я делаю # проект C для моей школе и у меня возникают проблемы с моей домашней работой, благодаряНеобработанное исключение типа «System.ArgumentException» произошло в System.Windows.Forms.dll

некоторые коды в здесь:

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

Публикация stacktrace здесь, чтобы показать, какая строка вызывает исключение –

ответ

1

Проблема эта линия:

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

Поскольку переменная i равна 0 (ноль), полученный цвет является прозрачным, и точное сообщение об исключении, которое вы получаете, должно быть таким:

Необработанное исключение типа «System.ArgumentException» произошло в System.Windows.Forms.dll

Дополнительная информация: Управление не поддерживает прозрачные цвета фона.

Для того, чтобы это исправить, исправить вашу логику для i и color переменных и использовать следующее:

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

который удаляет прозрачность от генерируемого цвета - см Color.FromArgb Method (Int32, Color).

+0

также вам нужно установить цвет переменной на что-то другое, кроме 0 – GreatJobBob

Смежные вопросы