Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12876326
  • 博文数量: 1293
  • 博客积分: 13501
  • 博客等级: 上将
  • 技术积分: 17974
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 18:11
文章分类

全部博文(1293)

文章存档

2019年(1)

2018年(1)

2016年(118)

2015年(257)

2014年(128)

2013年(222)

2012年(229)

2011年(337)

分类: C#/.net

2014-03-31 19:39:14

问题描述:
    在程序中频繁对某个窗体的ShowInTaskbar进行显示、隐藏操作,极易引起窗体的闪烁。

现象描述:
    当你做一些比较重要的事情时,你可能不希望程序不经意被异常退出。为此你可能为了屏蔽右键菜单点击关闭引发Ctopic_FormClosed事件引发的程序非正常退出现象(这是十分令人头痛的),而频繁的进行ShowInTaskbar=true,ShowInTaskbar=false这样的操作。

    如果你真这样做,闪屏会将你搞得十分狼狈。

image

 

    为了避免这种现象,干脆一不做二不休,直接不让窗体显示ControlBox(其中controlBox的close与右键菜单的close都是触发FormClosed事件的)

image

 

同时将窗体关闭事件屏蔽:


  1. ///
  2. /// 屏蔽FORM的右上角关闭及右键菜单的关闭事件
  3. ///
  4. protected override void WndProc(ref Message m)
  5. {
  6.     const int WM_SYSCOMMAND = 0x0112;
  7.     const int SC_CLOSE = 0xF060;
  8.     if (m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE)
  9.     {
  10.         return;
  11.     }
  12.     base.WndProc(ref m);
  13. }
阅读(2927) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~