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

时间:2015-03-26 12:38:23

标签: c# winforms

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

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

提前致谢。

3 个答案:

答案 0 :(得分:2)

最简单的方法是在设计器中设置Opacity = 0。当然,您稍后会想要将其设置回100 ..

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

static class Program
{
    /// <summary>
    /// Der Haupteinstiegspunkt für die Anwendung.
    /// </summary>
    [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;

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

答案 1 :(得分: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()提供参数。

答案 2 :(得分:0)

修改您的Program类 - 这是创建和显示表单的地方:

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

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