Winforms Drawing-参数在系统简历中无效
本文关键字:无效 系统 Drawing- 参数 Winforms | 更新日期: 2023-09-27 18:01:01
当我的应用程序正在运行并且系统从休眠状态(在Windows 7中(恢复时,我遇到了一个奇怪的问题。
我正在调用Graphics.DrawString方法,这在大多数情况下都很好。除非程序正在运行并且我使系统处于休眠状态。然后,当我继续时,DrawString方法抛出一个ArgumentException(参数无效(,并在我的绘图应该在的地方给我一个红十字。
这里出了什么问题?捕获异常可以避免红十字,但当我们进入这种状态时,就没有回头路了,异常将一直被抛出,直到程序重新启动。
谢谢你的帮助,Alan
编辑:这是失败的代码:
protected override void OnPaint(PaintEventArgs e)
{
// Drawing logic succeeds until this point
e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), new PointF(x, y));
}
这实际上是ToolStripLabel的一个子类。
许多系统资源在休眠或休眠后变得无效。因此,您的字体可能无效,因为这是此类问题的常见原因。此外,我注意到您没有在SolidBrush上调用Dispose,您应该这样做以防止资源泄漏。像这样。。。
using(SolidBrush drawBrush = new SolidBrush(ForeColor))
e.Graphics.DrawString(Text, Font, drawBrush, new PointF(x, y));