【问题标题】:C# Exception when window restored via taskbar click通过任务栏单击恢复窗口时的 C# 异常
【发布时间】:2013-11-29 00:02:41
【问题描述】:

我有一个主表单,frmMain。一切都很好,但是每当我最小化这个窗口然后点击任务栏恢复它时,就会抛出异常。

例外:

矩形 '{X=0,Y=0,Width=0,Height=0}' 不能有宽度或高度 等于 0。

在线Program.cs被抛出

Application.Run(new frmMain());

由于我是 C# 的新手,我无法解决这个问题。非常感谢任何帮助。

编辑 我没有使用自定义绘画,也没有使用任何东西来以编程方式处理窗口的高度或宽度

谢谢

【问题讨论】:

  • 你能发布堆栈跟踪吗?
  • 您的表单中有处理 Rectangle 类的自定义代码吗?
  • 关于编辑,发布相关代码和堆栈跟踪会有所帮助
  • 谢谢大家,我找到了罪魁祸首。自定义面板控件导致了问题。

标签: c# winforms


【解决方案1】:

我假设您正在使用自定义绘画,它使用某种LinearGradientBrush 或类似的东西。那会抛出ArgumentException

矩形 '{X=0,Y=0,Width=0,Height=0}' 不能有宽度或高度 等于 0。

例如下面的代码会重现问题。

Rectangle r = new Rectangle(0, 0, 0, 0);
var b = new System.Drawing.Drawing2D.LinearGradientBrush(r, Color.AliceBlue, Color.AntiqueWhite, 90);

因此您需要确保矩形的Size 不为空(即高度和宽度不等于零)。

【讨论】:

    【解决方案2】:

    我相信您将表单位置存储在某个地方,以便再次运行时可以恢复您的位置。存储在FormClosing 事件上并且只读取一次。

    【讨论】:

      【解决方案3】:

      为了避免进一步的关注,如果有人发现这篇文章,思考会有所帮助。

      罪魁祸首是自定义控件,它具有可“填充”的停靠属性。我删除了这个控件,改用另一个默认控件,问题就消失了。

      感谢大家的帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多