Ala*_*ark 5 c# drawing exception winforms
当我的应用程序运行并且系统从休眠状态恢复时(在Windows 7中),我遇到了一个奇怪的问题.
我正在调用Graphics.DrawString方法,这在大多数情况下工作正常.除了程序运行并且我休眠系统.然后,当我恢复,拉绳方法引发ArgumentException(参数无效),并给了我一个红色的叉在我的绘画应该是.
这里出了什么问题?捕获异常避免了红叉,但是当我们进入这种状态是没有办法回来,除了将继续抛出的程序重新启动为止.
感谢您的帮助,艾伦
编辑:这是失败的代码:
protected override void OnPaint(PaintEventArgs e)
{
// Drawing logic succeeds until this point
e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), new PointF(x, y));
}
Run Code Online (Sandbox Code Playgroud)
这实际上是ToolStripLabel的子类.
许多系统资源在睡眠或休眠后变得无效。因此,您的字体可能无效,因为这是此类问题的常见原因。另外我注意到您没有在 SolidBrush 上调用 Dispose,您应该这样做以防止资源泄漏。像这样...
using(SolidBrush drawBrush = new SolidBrush(ForeColor))
e.Graphics.DrawString(Text, Font, drawBrush, new PointF(x, y));
Run Code Online (Sandbox Code Playgroud)