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