使表单在首次加载时不可见

Posted

技术标签:

【中文标题】使表单在首次加载时不可见【英文标题】: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() 重复....***.com/questions/807005/… 【参考方案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;

【讨论】:

以上是关于使表单在首次加载时不可见的主要内容,如果未能解决你的问题,请参考以下文章

使用 Curl 从 Yii2 进行 WP 自动登录在首次加载时不起作用

UIDocumentInteractionController 操作/选项菜单在首次启动时不可见

Swift Scene Delegate 在首次启动时不运行代码

CKEDITOR 在首次提交时不通过 ajax 提交数据

iPhone简介视图-仅在首次加载时加载[关闭]

Foundation 兜风仅在首次加载问题时启动