如何重新绘制或刷新屏幕

3

我正在开发一个WPF应用程序。在这里,我需要在我的WPF应用程序中使用System.Windows.Forms.FolderBrowserDialog。

        System.Windows.Forms.FolderBrowserDialog openFolderBrowser = new System.Windows.Forms.FolderBrowserDialog();

        openFolderBrowser.Description = "Select Resource Path:";
        openFolderBrowser.RootFolder = Environment.SpecialFolder.MyComputer;
        if (openFolderBrowser.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            //some logic
            openFolderBrowser.Dispose();
        }

我启动了一个FolderBrowserDialog,选择了一个文件夹并单击确定,然后启动另一个System.Windows.Forms.FolderBrowserDialog。我的问题是当我在这个FolderBrowserDialog中选择一个文件夹并单击确定时,FolderBrowserDialog的影子仍然停留在屏幕上(意味着我的屏幕没有刷新)。我需要最小化或调整大小才能删除FolderBrowserDialog的影子。如何解决这个问题? 请帮忙。

编辑:

我找到了解决方案。我在我的wpf窗口上调用了OnRender方法,这对我有用。它重新绘制了屏幕上的所有内容。

2个回答

5

谢谢,这给了我解决问题的方法。我已经用我解决问题的方法更新了问题。 - viky
OnRender方法在我的机器上会消耗大量的CPU,我是在ShowDialog返回后使用这个方法的。 - Anonymous

1
在一个表单代码中。
 Update();

刷新屏幕并更新用户界面。

我们正在使用WinForms,因此Update()是重新绘制窗口内容的基本函数。因此,您可以直接从表单中使用它。基本用法可以是一个计时器,它会在屏幕上更新标签。当计时器滴答时,您可以更新标签:

System.Windows.Forms.Timer t = new System.Windows.Forms.Timer();
t.Interval = 1000; // specify interval time as you want 
t.Tick += new EventHandler(timer_Tick);
t.Start();

void timer_Tick(object sender, EventArgs e)
{
  label1.text = DateTime.Now.ToString("h:mm:ss")); 
  Update(); //this will refresh the form and label's text is updated.
}

否则 label1.text 将永远不会改变。

1
我认为这需要更多的信息,以便其他人能够找到这个答案有用。 - ono2012
3
Update() 不是标准的 .NET 方法。您应该指向正确的实现。 - Marcel Grüger
希望这次编辑能让ono2012和Marcel Grüger更加清楚。 - Alp Altunel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接