【发布时间】:2013-09-13 08:00:55
【问题描述】:
我正在尝试弄清楚如何阻止表格在屏幕上绘画。我的意思是当我启动表单时,它不会最终绘制表单,因此不会显示界面。
我知道如何使用控件执行此操作,但我不知道如何使用表单。我正在考虑发送一条消息来阻止它进行绘制将是最好的选择,尽管我不确定哪个消息会创建初始绘制工作。
以下是如何暂停绘制控件。
using System.Runtime.InteropServices;
class DrawingControl
{
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, Int32 wMsg,
bool wParam, Int32 lParam);
private const int WM_SETREDRAW = 11;
public static void SuspendDrawing(Control parent)
{
SendMessage(parent.Handle, WM_SETREDRAW, false, 0);
}
public static void ResumeDrawing(Control parent)
{
SendMessage(parent.Handle, WM_SETREDRAW, true, 0);
parent.Refresh();
}
}
【问题讨论】:
-
那么,这段代码有什么不好的地方?另外,您是否尝试过覆盖
OnPaint方法? -
致电
SuspendDrawing(yourForm);就这样 -
感谢您的回复。我实际上已经尝试过,尽管它仍然在屏幕上绘制表单,除了控件。
标签: c# .net windows pinvoke messaging