在应用程序启动时隐藏主窗体以便稍后显示它的最佳方法是什么?
如果我只是在这个表单的Hide
事件中调用Load
方法,它会在实际隐藏它之前给出一段可怕的闪存。
提前致谢。
答案 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();
}
}
希望您添加某种用户界面?