在应用程序启动时隐藏主窗体的最佳方法是什么?

在应用程序启动时隐藏主窗体以便稍后显示的最佳方法是什么?

如果我只是在这个表单的Load事件中调用Hide方法,它会在实际隐藏它之前给出一段可怕的闪存。

提前致谢。

最简单的方法是在设计器中设置Opacity = 0 。 当然你会想要在某个时候将它设置回100

或者您可能想要使用启动画面,可能是这样的:

 static class Program { ///  /// Der Haupteinstiegspunkt für die Anwendung. ///  [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Splash splash = new Splash(); splash.Show(); Application.Run(); } } 

有一个闪屏:

 public partial class Splash : Form { public Splash() { InitializeComponent(); } Form1 form1 = new Form1(); private void Splash_Load(object sender, EventArgs e) { form1.WindowState = FormWindowState.Minimized; form1.Hide(); } } 

然后,您可以在启动屏幕关闭时显示它:

 private void Splash_FormClosed(object sender, FormClosedEventArgs e) { form1.Show(); form1.WindowState = FormWindowState.Normal; } 

无论何时你需要或者可能在一段时间后会发生这种情况

 public Splash() { InitializeComponent(); Timer timer = new Timer(); timer.Interval = 5000; timer.Enabled = true; timer.Tick += (s,e) =>{ this.Close();}; } 

由于该程序没有观看要关闭的表单,我们还需要将其添加到主表单的已关闭事件中:

 private void Form1_FormClosed(object sender, FormClosedEventArgs e) { Application.Exit(); } 

如果你不想让初始屏幕可见,你可以像这样隐藏它:

 public Splash() { InitializeComponent(); this.Opacity = 0; 

但是请确保你不要让用户盲目:当我开始一个程序时,我想立即回复!

你可以像这样继续:

 private void Form1_Load(object sender, EventArgs e) { if (Settings.Instance.HideAtStartup) { BeginInvoke(new MethodInvoker(delegate { Hide(); })); } } 

另一种方法是使用Application.Run(Form)方法。 您可以创建主窗体,其Visible属性最初设置为false ,并且不在主循环中为Application.Run()提供参数。

修改您的Program类 – 这是创建和显示表单的位置:

 static class Program { ///  /// The main entry point for the application. ///  [STAThread] static void Main () { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Form1 frm = new Form1(); frm.Visible = false; Application.Run(); } } 

希望您添加某种用户界面?