如何在c#桌面应用程序中隐藏窗口?

Tas*_*han 0 c# desktop-application windows-7 winforms

我正在尝试制作一个隐藏的桌面应用程序,但只会在一段时间后显示.我试图在窗口加载事件中设置Visible = false但它仍然显示.

Han*_*ant 8

Visible属性在Winforms中是一个大问题,将其设置为true是导致创建本机Windows窗口的原因.其中一个副作用是在OnLoad方法或Load事件中将其设置为false不起作用.Hide()没有什么特别之处,只是将Visible设置为false,因此也不起作用.

重写SetVisibleCore()是一种方法.然而,重要的是您仍然可以创建本机窗口.否则你不能关闭()表格.看起来像这样:

    protected override void SetVisibleCore(bool value) {
        if (!IsHandleCreated && value) {
            value = false;
            CreateHandle();
        }
        base.SetVisibleCore(value);
    }
Run Code Online (Sandbox Code Playgroud)

您现在可以调用Show()或设置Visible = true以使窗口随时可见.并且即使您从未将其显示,也请调用Close().这是使用仅通过上下文菜单显示的弹出窗口实现NotifyIcon的好方法.

请注意,这有副作用,OnLoad()方法和Load事件直到第一次实际可见时才会运行.您可能需要移动代码.