【问题标题】:Windows Forms Update Dialogs/Sub Windows DynamicallyWindows 窗体动态更新对话框/子窗口
【发布时间】:2014-11-18 03:27:26
【问题描述】:

在我正在编写的模拟器中,我使用 SFML 和 OpenGL 通过一些基本的基于 OpenGL 的 GUI 创建可视化。现在我需要添加一个文件选择器对话框。我想知道是否可以使用 System.Windows.Forms.OpenFileDialog 并动态更新它的事件,类似于 OpenCV 允许您使用 cv::waitkey() 更新窗口的方式。

由于 OpenFileDialog.ShowDialog() 直到窗口被关闭才返回,我所要做的就是通过更新它的事件以某种方式关闭对话框。

我宁愿不必调用 Application.Run() 并将其留在后台,因为我的应用程序已经围绕主循环构建并且 Application.Run() 接管了主线程。

【问题讨论】:

    标签: c# winforms dialog


    【解决方案1】:

    对 cv::waitkey 的等效调用是:

    Application.DoEvents()
    

    然而,在阅读Use of Application.DoEvents() 之后,Application.DoEvents() 似乎比 cv::waitkey 更脆弱。如果没有打开的 win 表单,可能会导致应用程序崩溃。

    替代方法

    我决定切换到 GTK#,因为它允许您通过调用 Gtk.Application.EventsPending() 检查事件队列中是否存在任何事件来处理发生的事件。然后可以像这样在 while 循环中使用Gtk.Application.RunIteration() 处理事件:

    while (Gtk.Application.EventsPending())
    {
        Gtk.Application.RunIteration();
    }
    

    【讨论】:

      猜你喜欢
      • 2012-07-19
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多