在C#实现托盘效果

桌面程序的开发中,经常考虑能在状态栏实现托盘快捷操作,托盘程序的实现在API时代,还是相对复杂的,首先在MSDN中可以查看其函数细节,

然后在根据其要求的参数进行复杂的设置。
      在.NET时代,MS封装了这些麻烦的细节,开发者可以很容易的实现托盘程序的控制和操作。现以简单的实例为例来说明:
      1.添加notifyIcon控件和contextMenuStrip控件
      2.设置其属性icon和contextMenuStrp属性,Icon属性只需选择一个托盘图标,contextMenuStrip用于关联第一步的快捷菜单。
      3.添加窗体的SizeChanged事件程序,用于实现窗体最小化时调用托盘:
            if (this.WindowState == FormWindowState.Minimized)
            {
                //this.Hide();        //可以要,也可以不要,取决于是否隐藏主窗体

      //隐藏任务栏区图标

       this.ShowInTaskbar = false;
                this.notifyIcon.Visible = true;
            }
       4.添加notifyIcon的Click事件,打开快捷菜单项,或者其他更复杂的操作选项,根据需要而定。

        private void Form1_SizeChanged(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                //this.Hide();        //可以要,也可以不要,取决于是否隐藏主窗体
                //隐藏任务栏区图标
                this.ShowInTaskbar = false;
                //图标显示在托盘区
                notifyIcon.Visible = true;
            }
        }

        private void notifyIcon_DoubleClick(object sender, EventArgs e)
        {
            //判断是否已经最小化于托盘
            if (WindowState == FormWindowState.Minimized)
            {
                //还原窗体显示
                WindowState = FormWindowState.Normal;

                //激活窗体并给予它焦点
                this.Activate();
                //任务栏区显示图标
                this.ShowInTaskbar = true;
                //托盘区图标隐藏
                notifyIcon.Visible = false;
            }
        }

原文:http://www.cnblogs.com/wuxiangbing/articles/1885483.html

时间: 2024-10-30 00:29:05

在C#实现托盘效果的相关文章

.Net程序随系统开机启动(仿Foxmail托盘效果控制)

对于使.NET程序随系统开机启动,最常用的可能就是向在注册表中注册开机启动项,或是建立Windows服务,使程序随系统启动而启动.这里以WinForm程序为例,测试Demo分享,同时附上对于程序托盘的简单操作,仿Foxmail的托盘显示效果,好的产品都是细细打磨出来的呀!1.WinForm程序添加注册表和移除注册表(1).创建一个WinForm程序,界面如下(很简单):(2).主要实现代码:(注册表开机启动位置:SOFTWARE\Microsoft\Windows\CurrentVersion\

Pyqt QSystemTrayIcon 实现托盘效果

pyqt的托盘效果很好实现,在Pyqt的demo中有个例子 路径:PyQt4\examples\desktop\systray.py 今天我就仿这个Tray效果做效果 一. 创建UI trayicon.ui文件: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <ui version="4.0"> 3 <class>TrayIcon</class> 4 <

Qt 系统托盘(加hover效果)

最近项目需要添加系统托盘,本来Qt的QSystemTrayIcon可以实现的,但是要求要添加hover效果,并显示未读消息(就和qq的托盘差不多,移动上去显示未读列表),加了这个要求QSystemTrayIcon就没法实现了,最后使用的是NOTIFYICONDATA实现的,记录下. 1.创建一个系统托盘: NOTIFYICONDATA m_nid; CMsgTrayPos m_traypos; QLabel *m_pSysIcon; qApp->installNativeEventFilter(

C# WPF QQ新消息托盘悬浮窗效果实现

今天在做一个项目的时候需要这么一个效果,但是网上找了一会发现并没有现成的给我参考(复制),但是呢,我千(到)辛(处)万(抄)苦(袭)想(复)破(制)头(粘)脑(贴)终于还是给做出来了~嘿嘿嘿 QQ新消息悬浮窗即:QQ有新消息时托盘图标会闪动,此时移动鼠标到托盘图标上就会显示一个弹框了,那么呢我把这个弹框称为“QQ新消息托盘悬浮窗”.当鼠标从托盘图标移走后弹框隐藏,我们要做的效果就是这样的. 项目效果图: 涉及到的内容主要有:Popup,win32api,DispatcherTimer(定时器).

Qt实现系统托盘

        平时大多数看到的软件都是带系统托盘的,这样软件可以在后台运行,挺好的.今天看了下Qt自带的demon,中间有参考了下,实现了这个小小的功能,就将这个功能添加到了自己之前的一个项目中,效果蛮好的.界面如下所示: 右击系统托盘就会显示当前设定的各个菜单功能: 怎么样,效果还好吧.实现这个小功能厅满意的.右键点击弹出的菜单可以自行设定所需的.另外可以设定鼠标单击.双击.中间键分别按下时所触发的动作.主要代码如下所示: 1.首先需要添加头文件,Qsystem/trayIcon类.QMen

最小化到托盘,右键退出

1.添加notifyIcon1,并添加Icon图标(.ico文件) 2.添加contextMenuStrip1 3.contextMenuStrip1.Items属性添加选项 4.界面上双击选项编写事件 5.选项退出 private void toolStripMenuItem1_Click(object sender, EventArgs e) { Application.Exit(); } 6.主窗预定Resize事件 if (this.WindowState == FormWindowSt

使用electron将应用程序加入到系统托盘

博主电脑??进水坏了之后,MDZZ......来回折腾好几个来回,第三次维修店??拿电脑??,终于修好了~.废话不多一如既往先上图     一.将应用程序加入系统托盘 微信对于现代人来说已经是一种生活方式,支持单人.多人参与的一款跨平台的通讯工具. 通过手机网络发送语音.图片.视频和文字.其主要核心技术功能是(仅代表博主个人观点) InstantMessaging(即时通讯,实时传讯) 原谅博主资历尚浅,这里暂且不述~. 微信虽然大家都用,但也不见得自己无论是从产品方面或是技术方面会用/了解她,

显示一个托盘

1 private NotifyIcon notifyIcon = null; //这里在窗体上没有拖拽一个NotifyIcon控件,而是在这里定义了一个变量 2 public Form1() 3 { 4 InitializeComponent(); 5 InitialTray(); //调用初始化托盘显示函数 6 } 7 8 private void Form1_FormClosing(object sender, FormClosingEventArgs e) 9 { 10 e.Cancel

隐藏到托盘(C#)

private void Form1_Resize(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Minimized)//最小化到系统托盘 { notifyIcon1.Visible = true;//显示托盘图标 this.Hide();//隐藏窗口 } } private void notifyIcon1_MouseClick(object sender, MouseEventArgs e) { i