如何在显示 winforms 应用程序的主屏幕之前显示欢迎屏幕?

How to show a welcome screen before the main screen of a winforms application is shown?

我想在应用程序启动时加载欢迎屏幕,然后用户单击欢迎屏幕上的按钮,然后关闭欢迎屏幕。最后再显示主画面。

static void Main() //startup method being called
{
  Application.EnableVisualStyles();
  Application.SetCompatibleTextRenderingDefault(false);
  Application.Run(new ACM812_DB()); // welcome screen
}

在欢迎屏幕上单击按钮后,它会隐藏欢迎 window,然后调出主 window。如下图

private void button1_Click(object sender, EventArgs e)
{
   Form1 form1 = new Form1();
   form1.Show(); // main window
   this.Hide();
}

它确实工作成功,但它是实现它的正确方法吗?

更新代码:

主窗体启动(MainForm.cs)

namespace System
{
  public partial class MainForm : Form
  {
     private void MainForm_Load(object sender, EventArgs e)
     {
        WelcomeForm.Run(this);
     }

     public MainForm()
     {
        InitializeComponent();
     }

   }
 }

然后调用欢迎屏幕

public partial class WelcomeForm : Form
{
    static private Form Sender;

    static public void Run(Form sender)
    {
      if (sender == null) 
      throw new ArgumentNullException();
      Sender = sender;
      new WelcomeForm().ShowDialog();
    }

    private void ButtonClose_Click(object sender, EventArgs e)
    {
      Close();
    }
}

不是一个很好的模式。

因为 Application 实例是用来管理在应用程序退出之前一直处于“活动”状态的主窗体的。

您可以在主窗体加载中将欢迎屏幕显示为对话框:

MainForm.cs

private void MainForm_Load(object sender, EventArgs e)
{
  WelcomeForm.Run(this);
}

WelcomeForm.cs

public partial class WelcomeForm : Form
{
  static private Form Sender;
  static public void Run(Form sender)
  {
    if (sender == null) 
      throw new ArgumentNullException();
    Sender = sender;
    new WelcomeForm().ShowDialog();
  }
  private void ButtonClose_Click(object sender, EventArgs e)
  {
    Close();
  }
}

因此欢迎屏幕可以控制主窗体并设置任何 public 所需的数据。

MainForm 是在 Main 方法中创建的,Application 实例负责控制。因此调用 MainForm 的加载事件,最后调用 WelcomeForm 的 运行 静态方法,该方法创建一个实例并将其显示为对话框。这会停止 MainForm(尚未显示),直到欢迎屏幕关闭。然后就可以显示MainForm了。

这是其他方法中的一种,但很简单,如果它符合您的目标。