You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# WinForms托盘应用:如何通过托盘事件控制窗体显示/隐藏?

问题

开发了一款带事件处理程序的托盘应用,需求是在事件触发时,通过屏幕中央弹出的图片(显示约500毫秒)向用户通知状态,为此需要一个包含PictureBox的窗体。

尝试用new&close、show&hide两种方式控制窗体,但均未达到预期效果:

  • 仅启动时能正常显示隐藏一次,后续触发时窗体呈灰色无响应
  • 窗体完全不显示
  • 图片仅闪现半毫秒
  • 第二次触发时出现线程错误(未使用额外线程)

目前找不到正确的实现方式,陷入困境。

解决方案

由于该托盘应用以ApplicationContext而非Form启动,需要手动处理UI线程,具体实现步骤如下:

  • 为Application.Idle事件添加处理方法,在该方法内部实例化控制器/处理程序,避免重复实例化引发UI线程死锁
  • 在实例化代码及控制器/处理程序类中,添加Action<Action>类型的UI调用引用,确保所有UI操作都直接在UI线程中执行

内容的提问来源于stack exchange,提问作者tar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 10:19:52