c#

位置:IT落伍者 >> c# >> 浏览文章

C#下实现动态系统托盘图标


发布日期:2024年08月09日
 
C#下实现动态系统托盘图标

概述

我这里所指的图标程序是类似于在Windows中经常接触的停放在任务栏上在后台运行的病毒监视媒体播放等程序它们一般都具有单击显示或隐藏主界面击右键弹出菜单当鼠标停在图标上时显示提示信息的功能

程序主要用到了一下几个类

SystemWindowsFomrsNotifyIcon类

SystemWindowsFormsContextMenu类

SystemWindowsFormsMenuItem类

SystemWindowsFormsLabel类

SystemWindowsFormsTimer类

程序设计和运行的环境

)微软公司视窗服务器版或视窗XP版

Net FrameWrok SDK Beta

具体实现步骤

)在Visual Studio下新建一个C#的工程不妨命名为AnimateSystemTray图示如下

)现在我们来设计程序的主界面

先将窗体的Text属性设置为动画系统图标示例MaximiseBoxMinimiseBoxShowInTaskbar属性均设置为False

再往窗体上添加Label控件NotifyIcon控件ContextMenu控件Timer控件各一个

将Label控件的Text属性设置为请右击系统托盘图标将NotifyIcon控件的Icon属性设置为一个图标文件 Text属性设置为这是个示例程序!ContextMenu属性设置为contextMenu接下来开始编辑ContextMenu控件图示如下

最后还要在导入两个图标 (Iconico) (Iconico)文件到该项目

)现在我们开始编写代码部分

首先在我们的类中添加以下数据成员

private Icon m_Icon;

private Icon m_Icon;

private bool m_bFlag;

private bool m_bShowWnd;

修改Form()函数为

public Form(){

//// Required for Windows Form Designer support

//InitializeComponent();

//// TODO: Add any constructor code after InitializeComponent call

//m_bFlag=true;m_bShowWnd=true;try{m_Icon = new Icon(Iconico);

//导入图标文件m_Icon = new Icon(Iconico);}catch ( Exception e )

{

MessageBoxShow(Error + eMessageAnimate Tray Error);

menuItemEnabled = false;menuItemEnabled = false;

}

}

添加menuItemmenuItemmenuItemm_trayIcon的Click事件消息处理函数如下

private void menuItem_Click(object sender SystemEventArgs e)

{

timerStart();

//打开计时器}private void menuItem_Click(object sender SystemEventArgs e)

{

timerStop();

//停止计时器}

private void menuItem_Click(object sender SystemEventArgs e){ApplicationExit();

//退出应用程序}private void m_trayIcon_Click(object sender SystemEventArgs e)

{

if(m_bShowWnd == true)

//隐藏主界面{thisVisible = false;m_bShowWnd = false;

}

else

//显示主界面{thisVisible = true;m_bShowWnd = true;

}

}

最后还要添加timer的Tick()函数

private void timer_Tick(object sender SystemEventArgs e)

{

if ( m_Icon != null && m_Icon != null )

//如果两个图标文件都被正确载入

{

//只要timer被启动则在两个图标之间不断进行选择变换实现动画效果

if ( m_bFlag == true )

{m_trayIconIcon = m_Icon;m_bFlag = false;

}

else

{

m_trayIconIcon = m_Icon;m_bFlag = true;

}

}

}

好了按Ctrl+F试试效果吧!

运行程序将显示一个主窗口此时还可以看到在任务栏上面多了一个图标当鼠标移到其上停留一下时将显示一个简单的提示信息点击该图标则将隐藏主窗口单击右键出来一个菜单动画图标开始动画图标结束可以控制图标状态

总结

做完这个程序我们不难发现用C#做一些运用程序效果是非常方便的以前我在SDKMFC下用到了Shell_NotifyIcon()TrackPopMenu()以及DestroyMenu()还要自己添加消息处理函数工作量是非常大的现在微软为我们做好了这些工作是不是很方便?快快加入C#的行列吧!

上一篇:用Web Services来整合.NET和J2EE

下一篇:c#.net函数和方法集(zt)介绍