在开始时将 WinForm 应用程序最小化到托盘
问题
创建 WinForm 应用程序可以最小化到托盘很简单。但是,尝试以最小化状态启动应用程序会导致应用程序出现在 alt-tab 对话框中,其标题栏偶尔可见。
解决方案
为了防止如果应用程序在启动时不可见,则可以重写 SetVisibleCore() 方法。这涉及:
protected override void SetVisibleCore(bool value) { if (!allowVisible) { value = false; if (!this.IsHandleCreated) CreateHandle(); } base.SetVisibleCore(value); }
这里,allowVisible 是一个标志集,用于指示应用程序何时应该可见(例如,当用户单击 NotifyIcon 上下文菜单中的“显示”时)。如果allowVisible 为 false,则 value 参数设置为 false 以防止表单可见。但是,如果表单的句柄尚未创建,则必须在将值设置为 false 之前创建它。
此外,为了防止用户双击任务栏图标时应用程序关闭,可以使用 OnFormClosing 方法override:
protected override void OnFormClosing(FormClosingEventArgs e) { if (!allowClose) { this.Hide(); e.Cancel = true; } base.OnFormClosing(e); }
这里,allowClose 是一个标志,用于指示何时应关闭应用程序(例如,当用户单击NotifyIcon 上下文菜单中的“退出”)。如果allowClose为 false,则隐藏表单,并将 e.Cancel 属性设置为 true 以防止应用程序关闭。
附加说明
的 Load 事件在首次显示该窗体之前,主窗体不会触发。因此,任何初始化都应该在表单的构造函数中完成,而不是在 Load 事件处理程序中完成。
以上是如何确保WinForm应用程序启动时最小化到系统托盘而不意外显示?的详细内容。更多信息请关注PHP中文网其他相关文章!