【问题标题】:How to Redraw or Refresh a screen如何重绘或刷新屏幕
【发布时间】:2011-02-05 14:03:15
【问题描述】:

我正在开发一个 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 方法,它对我有用。它会重绘屏幕上的所有内容。

【问题讨论】:

    标签: c# wpf refresh folderbrowserdialog


    【解决方案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 永远不会改变。

    【讨论】:

    • 我认为这需要更多信息让其他人找到有用的答案
    • Update() 不是标准的 .NET 方法。你应该指出正确的实现。
    • 希望这次编辑让 ono2012 和 Marcel Grüger 清楚
    【解决方案2】:

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

    【讨论】:

    • 谢谢,它给了我解决问题的方法。我已经用我解决问题的方式更新了问题。
    • OnRender 会消耗我机器上的大量 CPU,我在 ShowDialog 返回后使用此方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多