尊重原著:http://blog.csdn.net/gatieme/article/details/47356695
现在很多程序都有这样的托盘程序 窗体关闭时,并不真正关闭程序,只是任务栏不显示该应用程序,在右下侧托盘里显示; 双击托盘,窗体还原; 右击窗体,出现托盘菜单,实现最小化,最大户,还原,退出等。 这样的功能C#winform怎样实现呢 ?
实现
WinForm中托盘菜单由NotifyIcon控件来实现,右键菜单由contextMenuStrip来实现,我们将二者相关联,即可实现我们所期望功能的托盘程序。
添加控件
我们在需要托盘的form界面上拖入NotifyIcon和一个ContextMenuStrip控件。
设置控件信息
设置控件的属性为我们期望的功能, 如本例中NotifyIcon控件名NAME为“mainNotifyIcon”,ContextMenuStrip控件名NAME为”mainNotifyContextMenuStrip”)
Icon为托盘图标,Text托盘显示文字,ContextMenuStrip右键菜单(退出),设置退出单击事件,我们将mainNotifyIcon的ContextMenuStrip属性设置为mainNotifyContextMenuStrip,即可实现该托盘与右键菜单的关联,在托盘上右键即出现右键菜单
我们开始添加右键菜单的各个选项,比如:最小化,最大化,还原,退出等
实现事件关联
private void MainWindow_FormClosing(
object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.UserClosing)
{
e.Cancel =
true;
this.WindowState = FormWindowState.Minimized;
this.mainNotifyIcon.Visible =
true;
this.Hide();
return;
}
}
这样我们就实现了单击关闭时,不真正关闭程序,而是将主界面隐藏HIDE掉,同时开始显示托盘菜单。
实现双击托盘打开主程序
private void mainNotifyIcon_MouseDoubleClick(
object sender, MouseEventArgs e)
{
if (
this.Visible)
{
this.WindowState = FormWindowState.Minimized;
this.mainNotifyIcon.Visible =
true;
this.Hide();
}
else
{
this.Visible =
true;
this.WindowState = FormWindowState.Normal;
this.Activate();
}
}
右键菜单实现最小化最大化还原和退出
private void toolStripMenuItemMinimize_Click(
object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
this.mainNotifyIcon.Visible =
true;
this.Hide();
}
private void toolStripMenuItemMaximize_Click(
object sender, EventArgs e)
{
this.WindowState = FormWindowState.Maximized;
this.mainNotifyIcon.Visible =
true;
this.Show();
}
private void toolStripMenuItemNormal_Click(
object sender, EventArgs e)
{
this.WindowState = FormWindowState.Normal;
this.mainNotifyIcon.Visible =
true;
this.Show();
}
private async void toolStripMenuItemQuit_Click(
object sender, EventArgs e)
{
if (MessageBox.Show(
"你确定要退出?",
"系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{
this.mainNotifyIcon.Visible =
false;
this.Close();
this.Dispose();
System.Environment.Exit(System.Environment.ExitCode);
}
}
}
转载请注明原文地址: https://ju.6miu.com/read-262.html