波斯历,带托盘图标






3.71/5 (16投票s)
一个显示托盘图标的波斯历。


介绍
在本文中,我将教你如何构建一个简单的应用程序,该应用程序创建一个托盘图标并显示一个简单的菜单。 此外,你将学习如何隐藏应用程序的主窗体。 如果你是波斯人,你可以找到将系统日期转换为赫吉拉太阳历(Hejri Shamsi)并在托盘图标中显示日期的代码。在新版本中添加了许多新功能,包括显示日历、安排任务和打印任务。请下载新版本。
使用代码
要创建一个显示托盘图标的程序,你应该从工具箱中将通知图标控件添加到你的窗体中。 通知图标有一些属性

一些重要的属性是
Icon
:更改托盘图标中显示的图标Visible
:设置是否显示图标ContextMenu
:为你的托盘图标设置菜单Text
:设置托盘图标的工具提示
我在窗体的构造函数中设置了所有这些属性
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;
}
在这个项目中,我想隐藏我的主窗体。为此,我执行了以下操作
- 将窗体的
ormWindowState
属性设置为Minimized
- 将窗体的
Opacity
属性设置为0
- 将
ShowInTaskbar
属性设置为false
- 为
VisibleChanged
添加一个事件处理程序,并添加以下代码
private void Form1_VisibleChanged(object sender, EventArgs e)
{
this.Visible = false;
}
因此,该程序只显示一个托盘图标,并且主窗体未显示。 因此,为了退出程序,我在托盘图标上创建了一个带有退出项的菜单。 当用户单击退出项时,程序结束。
protected void Exit_Click(Object sender, System.EventArgs e)
{
Close();
}
我的程序会根据赫吉拉太阳历中的日期更改托盘图标。为此,我创建了 31 个图标并将它们添加到我的项目的资源中。 我创建了一个窗体图标数组。
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;
在上面的代码中,我从程序集的资源中检索Icon
。 检索的优点是,在运行时,你的 EXE 文件包含图标,而不需要外部文件。
notifyIcon1.Icon = Icon_ar[dd];
结论
在这个简单的项目中,你可以找到创建托盘图标、创建菜单和从资源中检索图标的解决方案。
我希望这有用。