C# 如何重新绘制或刷新屏幕

C# 如何重新绘制或刷新屏幕,c#,wpf,refresh,folderbrowserdialog,C#,Wpf,Refresh,Folderbrowserdialog,我正在处理wpf应用程序。在这里,我需要在Wpf应用程序中使用System.Windows.Forms.FolderBrowserDialog System.Windows.Forms.FolderBrowserDialog openFolderBrowser = new System.Windows.Forms.FolderBrowserDialog(); openFolderBrowser.Description = "Select Resourc

我正在处理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方法,它对我起了作用。它会重新绘制屏幕上的所有符号。

您可以调用方法来刷新UI。

在表单代码上

 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永远不会改变。

谢谢,它给了我解决问题的方法。我已经用我解决问题的方法更新了这个问题。OnRender将在我的机器上消耗大量CPU,我在ShowDialog返回后使用此方法。我认为这需要更多的信息,以便其他人找到此答案有用Update()不是标准的.NET方法。您应该指出正确的实现。希望此编辑在2012年和Marcel Grüger上清楚说明