没有application . run, c# Form应用程序能运行吗?

本文关键字:运行 应用程序 Form application run 没有 | 更新日期: 2023-09-27 17:53:37

我有一个最初用Java创建的库,但我想用c#重写(并更新)它。我找到了IKVM,我可能要走这条路。但我的第一选择是用c#重写库。

库是一个教学工具,让人想起乌龟图形或卡雷尔机器人。所以我需要能够打开一个非模态窗口,同时仍然从主方法发送命令。

为了模仿原始的,我想使用类似于下面所示的代码来启动程序,因为这将加强对象声明和实例化的典型方式。顾名思义,MyCustomForm是Form的一个子类。

MyCustomForm = new MyCustomForm(…);

我已经搜索了整个网站,但没有发现任何其他类似的问题。

这在c#中可能吗?

没有application . run, c# Form应用程序能运行吗?

是的,有几种方法。最简单的方法是调用Application。定期DoEvents。这里有一个简短的例子,告诉你如何写它。

    static class Program {
        static bool formClosed = false;
        [STAThread]
        static void Main() {
            MyCustomForm form = new MyCustomForm();
            form.Show();
            form.FormClosed += Form_FormClosed;
            while(!formClosed) {
                Application.DoEvents();
                Thread.Sleep(10);
            }
        }
        private static void Form_FormClosed(object sender, FormClosedEventArgs e) { 
            formClosed = true; }
    }
尽管存在比这个例子更好的解决方案。尽管你的应用程序不是游戏,但你想谷歌的术语是"c#游戏循环"。

不,不可能。

application . run()启动事件泵,允许应用程序响应事件。这包括来自用户的事件(例如点击,拖动,最大化,关闭)和来自O/S或您自己的程序的事件(例如请求重新绘制窗口,响应计时器,在O/S被关闭时关闭)。为了提供典型的功能,所有windows窗体应用程序都需要这种类型的事件泵。

是的,只需在窗体上使用ShowDialog(),就像这样简单,然后当窗体关闭时调用Application.Exit()。不需要Application.DoEvents();在我的情况下,我使用它来允许用户再次与另一个用户登录。因此我可以关闭主表单e然后再次显示用户登录表单