Windows窗体更新对话框/子窗口动态

时间:2014-11-18 03:27:26

标签: c# winforms dialog

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

由于OpenFileDialog.ShowDialog()在窗口被关闭之前不会返回,所以我所要做的就是通过更新它的事件来关闭Dialog。

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

1 个答案:

答案 0 :(得分:0)

对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();
}