代码之家  ›  专栏  ›  技术社区  ›  viky

如何重画或刷新屏幕

  •  3
  • viky  · 技术社区  · 16 年前

    我正在处理一个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 年前
        1
  •  5
  •   David    16 年前

    InvalidateVisual 方法刷新UI。

        2
  •  1
  •   Alp Altunel Brinda Rathod    8 年前

    在表单代码上

     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.
    }