启动最小化到托盘的 WinForm 应用程序
使用 NotifyIcon 创建最小化到托盘的应用程序通常是一个方便的功能。然而,使用隐藏窗口最小化启动应用程序可能会带来挑战。
在一种情况下,最小化应用程序最初会使其在 alt-tab 对话框中可见。通过将 FormBorderStyle 更改为 ToolWindow 选项来解决此问题会引入一个新问题:启动期间窗口的标题栏在开始菜单上方短暂可见。
要解决这些问题,请考虑在启动期间完全阻止窗体出现。这需要重写 SetVisibleCore() 方法:
protected override void SetVisibleCore(bool value) { if (!allowVisible) { value = false; if (!this.IsHandleCreated) CreateHandle(); } base.SetVisibleCore(value); }
allowVisible 标志指示表单是否应该可见。通过在启动时将其设置为 false,即使 WindowState 最初设置为“最小化”,也可以防止表单变得可见。
此外,重写 OnFormClosing 事件处理程序以处理从系统菜单关闭表单:
protected override void OnFormClosing(FormClosingEventArgs e) { if (!allowClose) { this.Hide(); e.Cancel = true; } base.OnFormClosing(e); }
将allowClose 设置为 false 会抑制默认的关闭行为,而是隐藏表单。
在NotifyIcon 上下文菜单,您可以为 Show 和 Exit 命令定义处理程序,以分别控制表单的可见性和应用程序的终止。
这种方法允许您启动最小化到托盘的应用程序,而不会产生任何意外的副作用,将 NotifyIcon 保留为主要用户界面组件。
以上是如何启动最小化到系统托盘的 WinForms 应用程序而不出现任何可见性问题?的详细内容。更多信息请关注PHP中文网其他相关文章!