Click here to Skip to main content
6,291,722 members and growing! (12,917 online)
Email Password   helpLost your password?
Languages » C# » Date / Time     Intermediate License: The Code Project Open License (CPOL)

Persian Calendar with Tray Icon

By mohamad hajibegloo

A Persian calendar that shows a tray icon
C#, Windows, .NET, ASP.NET, GDI+, Dev, Design
Posted:4 Mar 2008
Views:11,474
Bookmarked:13 times
Announcements
Loading...
 
Search    
Advanced Search
printPrint   Broken Article?Report       add Share
  Discuss Discuss   Recommend Article Email
9 votes for this article.
Popularity: 3.88 Rating: 4.06 out of 5

1
1 vote, 11.1%
2
1 vote, 11.1%
3
3 votes, 33.3%
4
4 votes, 44.4%
5
traycalande1.JPG

traycalande2.JPG

Introduction

This is my first article that is written with the C# language. In this article, I will teach you how to build a simple application that creates a tray icon and shows a simple menu. Also in this article, you'll learn how to hide the main form of your application. If you are Persian, you can find codes that convert the date of a system to Hejri Shamsi and show the date in a tray icon.

Using the Code

To create a program that shows a tray icon, you should add a notify icon control to your form from the toolbox. Notify icons have some properties:

traycalande3.JPG

Some important properties are:

  1. Icon: changes the icon that shows in a tray icon
  2. Visible: sets if the icon is shown or not
  3. ContextMenu: sets a menu for your tray icon
  4. Text: sets the tool tip of a tray icon

I set all of these properties in a constructor of form:

public Form1()
        {
            InitializeComponent();
            /* some code there
                    */

            string s = strDay + " " + Convert.ToString(dd) + " " + 
                strMonth + " " + Convert.ToString(yy);
            s += "\n" + d1.ToLongDateString();
            notifyIcon1.Text = s;

            m_menu = new ContextMenu();
            m_menu.MenuItems.Add(0,
                new MenuItem("Exit", new System.EventHandler(Exit_Click)));
            notifyIcon1.ContextMenu = m_menu;
            notifyIcon1.Visible = true;
        }

In this project, I want a to hide my main form. For this, I did the following:

  1. Set the ormWindowState property of the form to Minimized
  2. Set the Opacity property of the form to 0
  3. Set the ShowInTaskbar property to false
  4. Add an event handler for VisibleChanged and add the below code:
      private void Form1_VisibleChanged(object sender, EventArgs e)
        {
            this.Visible = false;
        }

So, this program just shows a tray icon and the main form is not displayed. Therefore, for exiting from the program, I create a menu for the tray icon with an exit item. When the user clicks on the exit item, the program ends.

      protected void Exit_Click(Object sender, System.EventArgs e)
        {
            Close();
        }     

My program changes the tray icon related the date in Hejri Shamsi. For doing this, I created 31 icons and added them to the resource of my project. I created an array of form icons.

            Icon[] Icon_ar = new Icon[32];
            Icon_ar[1] = global::mytray.Properties.Resources.icon1;
            Icon_ar[2] = global::mytray.Properties.Resources.icon2;
            Icon_ar[3] = global::mytray.Properties.Resources.icon3;
            Icon_ar[4] = global::mytray.Properties.Resources.icon4;
            Icon_ar[5] = global::mytray.Properties.Resources.icon5;
            Icon_ar[6] = global::mytray.Properties.Resources.icon6;
            Icon_ar[7] = global::mytray.Properties.Resources.icon7;
            Icon_ar[8] = global::mytray.Properties.Resources.icon8;
            Icon_ar[9] = global::mytray.Properties.Resources.icon9;
            Icon_ar[10] = global::mytray.Properties.Resources.icon10;
            Icon_ar[11] = global::mytray.Properties.Resources.icon11;
            Icon_ar[12] = global::mytray.Properties.Resources.icon12;
            Icon_ar[13] = global::mytray.Properties.Resources.icon13;
            Icon_ar[14] = global::mytray.Properties.Resources.icon14;
            Icon_ar[15] = global::mytray.Properties.Resources.icon15;
            Icon_ar[16] = global::mytray.Properties.Resources.icon16;
            Icon_ar[17] = global::mytray.Properties.Resources.icon17;
            Icon_ar[18] = global::mytray.Properties.Resources.icon18;
            Icon_ar[19] = global::mytray.Properties.Resources.icon19;
            Icon_ar[20] = global::mytray.Properties.Resources.icon20;
            Icon_ar[21] = global::mytray.Properties.Resources.icon21;
            Icon_ar[22] = global::mytray.Properties.Resources.icon22;
            Icon_ar[23] = global::mytray.Properties.Resources.icon23;
            Icon_ar[24] = global::mytray.Properties.Resources.icon24;
            Icon_ar[25] = global::mytray.Properties.Resources.icon25;
            Icon_ar[26] = global::mytray.Properties.Resources.icon26;
            Icon_ar[27] = global::mytray.Properties.Resources.icon27;
            Icon_ar[28] = global::mytray.Properties.Resources.icon28;
            Icon_ar[29] = global::mytray.Properties.Resources.icon29;
            Icon_ar[30] = global::mytray.Properties.Resources.icon30;
            Icon_ar[31] = global::mytray.Properties.Resources.icon31;

In the above code, I retrieve Icons from the resource of the assembly. Retrieving has the advantage that, at run time, your EXE files have icons inside and don't need external files.

notifyIcon1.Icon = Icon_ar[dd];

Conclusion

In this simple project, you can find the solution for the problems of creating tray icons, creating menus and retrieving icons from resources.

I hope this is useful.

License

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

About the Author

mohamad hajibegloo


Member
I had worked as programmer,project manager,web developer for more than 3 years.
I have worked in university as a teacher for 3 years.
my favorite langueges are : VC++,C#,PHP
Occupation: Engineer
Company: neyshabur azad univeristy
Location: Iran, Islamic Republic Of Iran, Islamic Republic Of

Other popular C# articles:

Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Noise Tolerance  Layout  Per page   
 Msgs 1 to 10 of 10 (Total in Forum: 10) (Refresh)FirstPrevNext
Generalcalendar Pinmemberhamed.shokri23:39 13 May '09  
GeneralSimple but wonderful ! Pinmemberrostamiani3:14 16 Dec '08  
GeneralGood work PinmemberMohammad Dayyan12:30 15 Sep '08  
Newseyval Pinmembersdfa0:47 12 Mar '08  
Generalsalam Pinmemberm_s_rezaei19:45 11 Mar '08  
GeneralPersianCalendar PinmemberMehdy585:00 5 Mar '08  
AnswerRe: PersianCalendar Pinmembermohamad hajibegloo2:02 9 Mar '08  
GeneralRe: PersianCalendar PinmemberMehdy586:29 12 Mar '08  
AnswerRe: PersianCalendar PinmemberBehnood6:30 12 Mar '08  
GeneralRe: PersianCalendar Pinmemberpampam1100:39 28 May '09  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 4 Mar 2008
Editor: Genevieve Sovereign
Copyright 2008 by mohamad hajibegloo
Everything else Copyright © CodeProject, 1999-2009
Web10 | Advertise on the Code Project