关闭VB.NET中的屏幕回显

时间:2009-08-13 05:17:51

标签: vb.net winforms

在Microsoft Access中,有一种通过设置Echo = False来关闭屏幕更新的简单方法。在VB.NET中是否存在WinForms的等价物?我有一种情况,我试图阻止用户在更新时看到控件闪烁。我可以通过不同的编码来解决问题,但如果可以,我宁愿避免使用它。

2 个答案:

答案 0 :(得分:1)

您要做的是暂停和恢复重新绘制表单。没有托管API,但这是一个相当简单的P / Invoke。我不记得用于声明外部函数的VB.NET语法,但是这个C#示例应该为您提供您需要知道的信息。

[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 target)
{
    SendMessage(target.Handle, WM_SETREDRAW, false, 0);
}

public static void ResumeDrawing(Control target)
{
    SendMessage(target.Handle, WM_SETREDRAW, true, 0);
    target.Refresh();
}

答案 1 :(得分:0)

在C#中(这代表你的表格):

this.SuspendLayout();
// Make your changes
this.ResumeLayout(false);