Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / desktop / WinForms

Animating Shell Tray Icon With C#

2.75/5 (17 votes)
18 May 2008CPOL1 min read 1   1.8K  
This class helps to animate a tray icon.

AppImage.JPG

Tray_Icon.JPG

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.

C#
//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: A System.Drawing.Icon object which will be displayed in the system tray.
  • pAnimate: A bool parameter to support the animation capabilities.

Methods

Syntax

C#
//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

C#
//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:

C#
//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);

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)