我有一个设置为使用按钮自动刷新的 Windows 窗体,如下所示:(代码不起作用)怎么办?
折叠 | 复制代码
private void Refresh_Click(object sender, EventArgs e)
{
this.Refresh();
}
我有一个设置为使用按钮自动刷新的 Windows 窗体,如下所示:(代码不起作用)怎么办?
折叠 | 复制代码
private void Refresh_Click(object sender, EventArgs e)
{
this.Refresh();
}
此代码肯定会刷新表单。然而,几乎不可能产生任何明显的差异,Windows 和 Winforms 已经非常擅长在没有任何帮助的情况下保持表单更新。您还必须做一些其他事情,这会使表单绘制不同。
一个简单的例子:
private bool drawMessage;
private void Refresh_Click(object sender, EventArgs e) {
drawMessage = !drawMessage;
this.Invalidate();
}
protected override void OnPaint(PaintEventArgs e) {
if (drawMessage) {
TextRenderer.DrawText(e.Graphics, "You clicked Refresh", this.Font, Point.Empty, this.ForeColor);
}
base.OnPaint(e);
}
您拥有的应该刷新该事件所属的当前表单。由于缺乏可理解的信息(发生了什么以及为什么说它不起作用?等等),很难弄清楚您的问题是什么。但是,您可以尝试
private void Refresh_Click(object sender, EventArgs e)
{
this.Update();
}
因此,这两种方法的区别在于:
控制.更新()
如果窗口的更新区域不为空,Update() 函数调用 UpdateWindow 函数,该函数通过向(控件的)窗口发送 WM_PAINT 消息来更新控件的客户区。此函数绕过应用程序消息队列直接向 WNDPROC() 发送 WM_PAINT。
因此,如果窗口更新区域之前“无效”,那么调用“更新”将立即“更新”(并导致重新绘制)无效。
控制.刷新()
Refresh() 调用 Invalidate(true) 使控件及其子项无效,然后调用 Update() 强制绘制控件,使无效是同步的。
我希望这有帮助。