如何重绘或刷新屏幕

时间:2010-04-08 06:51:54

标签: c# wpf refresh folderbrowserdialog

我正在开发一个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的阴影。我该如何解决这个问题? 任何帮助PLZ?

编辑:

我找到了解决方案。我在我的wpf Window上调用了OnRender方法,它对我有用。它会重新绘制屏幕上的每一个标记。

2 个答案:

答案 0 :(得分:3)

您可以调用InvalidateVisual方法刷新用户界面。

答案 1 :(得分:-1)

表单代码

 Update();

刷新屏幕并更新ui。

我们正在使用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永远不会改变。