在应用程序启动时隐藏主窗体的最佳方法是什么?
在应用程序启动时隐藏主窗体以便稍后显示的最佳方法是什么?
如果我只是在这个表单的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(); } }
希望您添加某种用户界面?