在C#控制台项目中启动表单?

vis*_*hnu 4 .net c# console-application .net-3.5

我的项目是一个控制台客户端.我从控制台开始,然后显示表单.我使用下面的代码显示一个空白表单(我稍后会添加控件)给用户.但是表单会显示,但它会被卡住(不活动).我该怎么办?

Console.WriteLine("Starting form");
Console_Client.Main mainform = new Main();
mainform.Show();
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

Pie*_*kel 9

试试ShowDialog().

问题是你没有运行消息循环.有两种方法可以启动一种方法.ShowDialog()有一个集成,所以将工作.另一种方法是Application.Run()Show()调用之后或使用表单作为参数.

  1. ShowDialog():

    mainform.ShowDialog();
    
    Run Code Online (Sandbox Code Playgroud)
  2. Application.Run() 没有形式:

    mainform.Show();
    Application.Run();
    
    Run Code Online (Sandbox Code Playgroud)
  3. Application.Run() 与形式:

    Application.Run(mainform);
    
    Run Code Online (Sandbox Code Playgroud)

所有这些工作.

  • ShowDialog()在某些情况下会起作用,但是,如果没有真正的消息泵,表单的某些功能将不会按照您期望的方式运行.如果表格很简单,这很好...... (2认同)

Ree*_*sey 5

您需要启动一个完整的应用程序,就像Windows窗体应用程序通常一样:

 Console.WriteLine("Starting form");
 Console_Client.Main mainform = new Main();

 // This will start the message loop, and show the mainform...
 Application.Run(mainform);

 // This won't occur until the form is closed, so is likely no longer required.
 // Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)