Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我有一个windows窗体,它必须使用按钮自动刷新_C# - Fatal编程技术网

C# 我有一个windows窗体,它必须使用按钮自动刷新

C# 我有一个windows窗体,它必须使用按钮自动刷新,c#,C#,我有一个windows窗体,它被设置为使用如下按钮自动刷新:(代码不工作)怎么办 折叠|复制代码 private void Refresh_Click(object sender, EventArgs e) { this.Refresh(); } 您所拥有的,应该刷新该事件所属的当前窗体。由于缺乏可理解的信息,很难弄清楚你的问题是什么(发生了什么,为什么你说它不起作用?等等)。不过,你可以试试 private void Refresh_Click(object sender, Even

我有一个windows窗体,它被设置为使用如下按钮自动刷新:(代码不工作)怎么办

折叠|复制代码

private void Refresh_Click(object sender, EventArgs e)
{
    this.Refresh();
}

您所拥有的,应该刷新该事件所属的当前窗体。由于缺乏可理解的信息,很难弄清楚你的问题是什么(发生了什么,为什么你说它不起作用?等等)。不过,你可以试试

private void Refresh_Click(object sender, EventArgs e)
{
    this.Update();
}
因此,这两种方法的区别在于:

Control.Update()

Update()函数调用UpdateWindow函数,如果窗口的更新区域不是空的,则该函数通过向窗口(控件的)发送WM_PAINT消息来更新控件的客户端区域。此函数绕过应用程序消息队列直接向WNDPROC()发送WM_PAINT

因此,如果窗口更新区域以前是“无效的”,那么调用“更新”将立即“更新”(并导致重新绘制)无效

控件。刷新()

Refresh()调用Invalidate(true)使控件及其子控件无效,然后调用Update()强制绘制控件,以使无效是同步的


我希望这有帮助。

这段代码肯定会刷新表单。然而,这不太可能产生任何明显的区别,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);
    }

你试过什么?你有密码吗?哪里不是做作业的地方。问题是什么?