如何设置主Winform的默认可见性

时间:2012-09-01 07:37:31

标签: c# winforms

我已逐步运行我的程序,但仍然无法找到form.visible的设置位置。

以下是“Form1.cs”的代码:

public Form1()
{
    InitializeComponent();
    this.Hide();
}

我添加了this.Hide();,但它根本不起作用。

我甚至修改了“Program.cs”:

Application.Run(new Form1());

为:

Form1 form1=new Form1();
form1.Visible = false;
Application.Run(form1);

但主要表单仍然显示,即使添加form1.Enable=false;也不会阻止表单显示。我也尝试在this.Hide();中添加Form1_Load(),但它有效,但主要形式出现并在最终被隐藏之前闪现。

我现在完全糊涂了。那么如何在不显示的情况下加载主窗体?并将其隐藏起来,直到我拨打this.Show();

6 个答案:

答案 0 :(得分:2)

在加载之前,您无法将表单visible设置为false,请尝试以下代码:

//In Main Function
Form1 form1 = new Form1();
form1.WindowState = FormWindowState.Minimized;
form1.ShowInTaskbar = false;
Application.Run(new Form1());
//In Form Shown
private void Form1_Shown(object sender, EventArgs e)
{
this.Visible = false;
}

答案 1 :(得分:2)

Application.Run(Form)的文档清楚地说明它会使表单可见。只要您需要隐藏它,就不应该将该表单传递给Application.Run。根据您的需要,您可以使用Application.Run()(无参数)或Application.Run(context)(创建自定义ApplicationContext)。

编辑:我只想添加不显示表单,您不应该显示表单。我不明白这里有多少用户认为显示表单然后很快隐藏它,或者使显示表单的代码不显示表单是个好主意。你不应该做错事,然后在事后修好,你应该在第一时间做正确的事。

答案 2 :(得分:2)

为什么不覆盖SetVisibleCore方法:

bool showForm = false;

protected override void SetVisibleCore(bool value)
{    
   base.SetVisibleCore(showForm);
}

这会在表单打开之前隐藏表单。使用很多方法,你可以在它之前看到表格的简短闪光。可见或类似的属性被设置为“隐藏”。

显然,当你想再次显示它时,你需要另一种方法将'showForm'翻转为true,即NotifyIcon事件。

答案 3 :(得分:1)

您可能正在寻找Opacity属性。您可以从IDE中将Opacity设置为0.0。它可以在0.01.0之间取值。

答案 4 :(得分:0)

您可以尝试这样的事情:

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        var form = new Form1();
        form.DoBeforeShow();
        Application.Run(form);
    }

答案 5 :(得分:0)

首先,您可以加载您想要向用户显示的表单。在构造函数中只调用应隐藏的表单。之后你可以关闭或隐藏它。