【问题标题】:an unhandled exception of type 'System.ArgumentException' occurred in System.Windows.Forms.dllSystem.Windows.Forms.dll 中出现“System.ArgumentException”类型的未处理异常
【发布时间】:2016-04-14 19:42:29
【问题描述】:

我真的是一个编程新手,所以如果我的知识似乎真的不足,请原谅。我正在为我的学校做一个 C# 项目,但我的作业有问题,谢谢

这里有一些代码:

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;
    }
}

【问题讨论】:

  • 去掉第一个 ShowDialog()...
  • 谢谢我的朋友,但还是不行。
  • 在此处发布堆栈跟踪以显示导致异常的行
  • frm2.BackColor = Color.FromArgb(i*color);这一行
  • 您的 i*color 将始终为 0,因为您从未将颜色设置为不同的值

标签: c# windows forms backcolor


【解决方案1】:

问题出在这一行:

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

由于您的 i 变量为 0(零),因此生成的颜色是透明的,您得到的确切异常消息应该是这样的:

System.Windows.Forms.dll 中出现“System.ArgumentException”类型的未处理异常

附加信息:控件不支持透明背景色。

为了修复它,请更正 i 和 color 变量的逻辑并使用以下内容:

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

从生成的颜色中移除透明度 - 请参阅 Color.FromArgb Method (Int32, Color)。

【讨论】:

  • 另外,您需要将变量颜色设置为 0 以外的值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多