0

我已经逐步运行了我的程序,但是仍然找不到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();

4

6 回答 6

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;
}
于 2012-09-01T07:48:35.760 回答
2

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

编辑:我只是想补充一点,不显示表格,你不应该显示表格。我不明白这里有多少用户认为显示表单然后很快隐藏它是一个好主意,或者让显示表单的代码不显示表单。你不应该做错事然后在事后修复它,你应该首先做正确的事。

于 2012-09-01T08:05:02.897 回答
2

为什么不重写 SetVisibleCore 方法:

bool showForm = false;

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

这将在表单打开之前将其隐藏。使用许多方法,您会在其 .Visible 或类似属性设置为“隐藏”之前看到表单的短暂闪烁。

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

于 2012-09-01T08:26:48.483 回答
1

您可能正在寻找该Opacity物业。您可以从 IDE设置Opacity为。0.0它可以取 和 之间0.0的值1.0

于 2012-09-01T09:11:26.980 回答
0

你可以尝试这样的事情:

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

        var form = new Form1();
        form.DoBeforeShow();
        Application.Run(form);
    }
于 2012-09-01T07:57:28.087 回答
0

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

于 2012-09-01T09:58:23.903 回答