5,136,421 members and growing! (13,525 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, GDI+, ASP.NET, Dev, Design

Posted: 4 Mar 2008
Updated: 4 Mar 2008
Views: 2,866
Announcements



Search    
Advanced Search
Sitemap
4 votes for this Article.
Popularity: 2.47 Rating: 4.10 out of 5
0 votes, 0.0%
1
0 votes, 0.0%
2
1 vote, 25.0%
3
1 vote, 25.0%
4
2 votes, 50.0%
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


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
Sign Up to vote for this article
You must Sign In to use this message board.
FAQ FAQ Noise ToleranceSearch Search Messages 
 Layout  Per page   
 Msgs 1 to 6 of 6 (Total in Forum: 6) (Refresh)FirstPrevNext
Subject  Author Date 
Newseyvalmembersdfa0:47 12 Mar '08  
Generalsalammemberm_s_rezaei19:45 11 Mar '08  
GeneralPersianCalendarmemberMehdy585:00 5 Mar '08  
AnswerRe: PersianCalendarmembermohamad hajibegloo2:02 9 Mar '08  
GeneralRe: PersianCalendarmemberMehdy586:29 12 Mar '08  
AnswerRe: PersianCalendarmemberBehnood6:30 12 Mar '08  

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-2008
Web11 | Advertise on the Code Project