【问题标题】:Making a form be invisible when it first loads使表单在首次加载时不可见
【发布时间】:2011-06-15 12:33:35
【问题描述】:

目前,表单的不透明度为 0%,因此当它加载时,它应该是不可见的,但是当表单加载时,它会在几秒钟内可见。由于默认不透明度设置为 0%,并且表单的可见性在不透明度设置回 100% 之前设置为 false,因此我认为在我告诉它之前表单应该是不可见的。

    public FormMain()
    {
        InitializeComponent();
        this.Visible = false;
        this.Opacity = 1.00;
    }

如何让我的表单默认不可见?

【问题讨论】:

  • 程序启动时,Application.Run(FormMain);使表单可见。因此,如果您想在加载时隐藏,请将this.Hide()this.Visible = false 添加到它的Paint 事件或创建FormMain 的实例,然后调用Application.Run()

标签: c# winforms visibility opacity


【解决方案1】:

这是可能的。您必须阻止 Application 类使表单可见。你不能修补应用程序,它被锁定了。但这有效:

    protected override void SetVisibleCore(bool value) {
        if (!this.IsHandleCreated) {
            this.CreateHandle();
            value = false;
        }
        base.SetVisibleCore(value);
    }

这是一次性取消,您下次调用 Show() 或设置 Visible = true 将使其可见。您需要某种触发器,典型的是 NotifyIcon 上下文菜单。请注意,Load 事件在实际可见之前不会运行。其他一切正常,调用 Close() 方法会终止程序。

【讨论】:

  • 不,它不能正常工作,不会调用 Load() 方法。
  • @CodeOrElse 如果您指的是 Load 事件,请再次阅读答案。不要只是复制和粘贴代码。
【解决方案2】:

您可以使用 Form_Shown 事件。当您的主表单显示时,将调用此事件,您可以在其中修改表单的属性,因为它已完全初始化。这不是最美观的方式。但这是我找到的唯一简单方法。

private void Form1_Shown(object sender, EventArgs e)
{
    this.Visible = false;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 2023-02-19
    • 1970-01-01
    • 2020-07-23
    相关资源
    最近更新 更多