Click here to Skip to main content
Licence CPOL
First Posted 4 Mar 2008
Views 24,833
Downloads 271
Bookmarked 22 times

Persian Calendar with Tray Icon

By mohamad hajibegloo | 4 Mar 2008
A Persian calendar that shows a tray icon

1
2 votes, 15.4%
2
2 votes, 15.4%
3
4 votes, 30.8%
4
5 votes, 38.5%
5
3.67/5 - 13 votes
μ 3.67, σa 1.95 [?]
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

Engineer
neyshabur azad univeristy
Iran (Islamic Republic Of) Iran (Islamic Republic Of)

Member
I had worked as programmer,project manager,web developer for more than 3 years.
I have worked in university as a teacher for 5 years.
my favorite langueges are : VC++,C#,ASP.NET,PHP

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
QuestionTannks for you Pinmembersvk664:01 28 Jan '12  
AnswerRe: Tannks for you Pinmembermohamad hajibegloo4:32 28 Jan '12  
QuestionThanks PinmemberMember 814047219:05 8 Aug '11  
Generalthanks Pinmemberdeepshit20:52 8 Mar '10  
GeneralRe: thanks Pinmembermohamad hajibegloo5:46 24 Jul '10  
GeneralMy vote of 2 PinmemberDungVinh18:43 6 Sep '09  
GeneralRe: My vote of 2 Pinmembermohamad hajibegloo5:47 24 Jul '10  
Generalcalendar Pinmemberhamed.shokri23:39 13 May '09  
GeneralRe: calendar Pinmembermohamad hajibegloo5:47 24 Jul '10  
GeneralSimple but wonderful ! Pinmemberrostamiani3:14 16 Dec '08  
GeneralRe: Simple but wonderful ! Pinmembermohamad hajibegloo5:48 24 Jul '10  
GeneralGood work PinmemberMohammad Dayyan12:30 15 Sep '08  
GeneralRe: Good work Pinmembermohamad hajibegloo5:48 24 Jul '10  
Newseyval Pinmembersdfa0:47 12 Mar '08  
GeneralRe: eyval Pinmembermohamad hajibegloo5:48 24 Jul '10  
Generalsalam Pinmemberm_s_rezaei19:45 11 Mar '08  
GeneralRe: salam Pinmembermohamad hajibegloo5:49 24 Jul '10  
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    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web04 | 2.5.120210.1 | Last Updated 4 Mar 2008
Article Copyright 2008 by mohamad hajibegloo
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid