Animating Shell Tray Icon With C#






2.75/5 (17 votes)
This class helps to animate a tray icon.
Introduction
This article explains how to animate the tray icon. In .NET, they have simplified the things to add an icon in the system tray.
While writing an application, in many cases we need to add the application to the system tray and most of the common functionality will be provided from the context menu from the system tray. The application will show background processing through an icon animation, like if the application is processing an event, then it will animate the icon till the event processing is complete.
Background
If you are writing an application in C#, it has the NotifyIcon()
component with capabilities to add an application icon in the system tray, or you can use the Shell API Shell_NotifyIcon()
to add the icon; using the API is not very easy though.
About the SystemTray Class
This class wraps almost all the functionalities of the NotifyIcon
component as well as extends the functionality to achieve easy animation of the tray icon. The class provides functions with which it is easy to configure the class.
SystemTray Class Summary
It is very simple to use this class. I will describe how to use the class after explaining all the other details of the class.
Constructors
Syntax
This class provides four constructors to simplify the use of the class in your project.
//Default constructor
SystemTray()
//Constructor with the parameter tooltip text
SystemTray(string pTrayText)
//Constructor with tooltip test and icon
SystemTray(string pTrayText, Icon pIcon)
//Constructor with Animation parameter
SystemTray(string pTrayText,Icon pIcon,bool pAnimate)
Parameter details
pTrayText
: A string you want to display as the tooltip text when the mouse points at the application system tray icon.pIcon
: ASystem.Drawing.Icon
object which will be displayed in the system tray.pAnimate
: Abool
parameter to support the animation capabilities.
Methods
Syntax
//Start the icon animation
void StartAnimation()
//Stops the icon animation
void StopAnimation()
//Starts the animation with the timeout value after
//which the animation will stop.value will be in miliseconds
void StartAnimation(int timeOut)
//Displays the baloon tooltip with timeout value.
//Time out will be in miliseconds
void ShowBaloonTrayTip(int nTimeout)
//Displays the baloon tooltip with some parameters
void ShowBaloonTrayTip(int nTimeOut,string tipTitle,
string tipText,ToolTipIcon tipIcon)
//Sets the icon objets to the class,will be used for animation
void SetIconRange(object[] IconList)
Properties
//Set icon to class
Icon Icon
//Make tray icon visible true or false
bool Visible
//Set text to trayicon
string TrayText
//Sets the animation ability
bool Animate
//To set the baloon tooltip text
string BaloonTipText
//To set the baloon tooltip title
string BalloonTipTitle
//To set the baloon tooltip icon
ToolTipIcon BalloonTipIcon
Using the SystemTray Class
Here is how to use the SystemTray
class:
//SystemTray stray;
//Add in form load or InitializeComponent() function
object[] objValues = new object[2];
objValues[0] = Convert.ToString("Icon1.ico");
objValues[1] = Convert.ToString("Icon2.ico");
//Add Icon
stray= new SystemTray("Sample Tray Icon Animation",null,true);
//Sets icons for animation
stray.SetIconRange(objValues);
//Set menu
stray.SetContextMenuOrStrip((object)contextMenuStrip1);
//Set Event
stray.DoubleClick += new System.EventHandler(this.DbClick);
//Set menu handler
stray.ContextMenuStrip.Items[0].Click +=
new EventHandler(SystemTraySample_Click);
//Start icon animation for 2 seconds
stray.StartAnimation(2000);