没有application . run, c# Form应用程序能运行吗?
本文关键字:运行 应用程序 Form application run 没有 | 更新日期: 2023-09-27 17:53:37
我有一个最初用Java创建的库,但我想用c#重写(并更新)它。我找到了IKVM,我可能要走这条路。但我的第一选择是用c#重写库。
库是一个教学工具,让人想起乌龟图形或卡雷尔机器人。所以我需要能够打开一个非模态窗口,同时仍然从主方法发送命令。
为了模仿原始的,我想使用类似于下面所示的代码来启动程序,因为这将加强对象声明和实例化的典型方式。顾名思义,MyCustomForm是Form的一个子类。
MyCustomForm = new MyCustomForm(…);
我已经搜索了整个网站,但没有发现任何其他类似的问题。
这在c#中可能吗?
是的,有几种方法。最简单的方法是调用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然后再次显示用户登录表单