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,选择一个文件夹并单击 OK,然后我启动另一个 System.Windows.Forms.FolderBrowserDialog,我的问题是当我在此 FolderBrowserDialog 中选择一个文件夹并单击 OK 时,FolderBrowserDialog 的阴影仍保留在屏幕上(意味着我的屏幕没有刷新)。我需要最小化或调整它的大小以消除 FolderBrowserDialog 的阴影。我该如何解决这个问题?有什么帮助吗?

编辑:

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

4

2 回答 2

5

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

于 2010-04-08T07:19:39.073 回答
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 永远不会改变。

于 2017-07-29T09:31:48.607 回答