C# WinForm窗口最小化到系统托盘

 更新时间:2008年11月26日 12:40:50   作者:  
C#编写最小化时隐藏为任务栏图标的 Window appllication.
1.设置WinForm窗体属性showinTask=false
2.加notifyicon控件notifyIcon1,为控件notifyIcon1的属性Icon添加一个icon图标。
3.添加窗体最小化事件(首先需要添加事件引用):

复制代码 代码如下:

this.SizeChanged += new System.EventHandler(this.Form1_SizeChanged);
//上面一行是主窗体InitializeComponent()方法中需要添加的引用
private void Form1_SizeChanged(object sender, EventArgs e)
{
if(this.WindowState == FormWindowState.Minimized)
{
this.Hide();
this.notifyIcon1.Visible=true;
}
}

4.添加点击图标事件(首先需要添加事件引用):

private void notifyIcon1_Click(object sender, EventArgs e)
{
this.Visible = true;
this.WindowState = FormWindowState.Normal;
this.notifyIcon1.Visible = false;
}
5.可以给notifyIcon添加右键菜单:
主窗体中拖入一个ContextMenu控件NicontextMenu,点中控件,在上下文菜单中添加菜单,notifyIcon1的ContextMenu行为中选中NicontextMenu 作为上下文菜单。
复制代码 代码如下:

this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
this.NicontextMenu = new System.Windows.Forms.ContextMenu();
this.menuItem_Hide = new System.Windows.Forms.MenuItem();
this.menuItem_Show = new System.Windows.Forms.MenuItem();
this.menuItem_Aubot = new System.Windows.Forms.MenuItem();
this.menuItem_Exit = new System.Windows.Forms.MenuItem();
this.notifyIcon1.ContextMenu = this.NicontextMenu;
this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject( "NotifyIcon.Icon ")));
this.notifyIcon1.Text = " ";
this.notifyIcon1.Visible = true;
this.notifyIcon1.DoubleClick += new System.EventHandler(this.notifyIcon1_DoubleClick);
this.notifyIcon1.Click += new System.EventHandler(this.notifyIcon1_Click);
this.NicontextMenu.MenuItems.AddRange(
new System.Windows.Forms.MenuItem[]
{
this.menuItem_Hide,
this.menuItem_Show,
this.menuItem_Aubot,
this.menuItem_Exit
}
);
//
// menuItem_Hide
//
this.menuItem_Hide.Index = 0;
this.menuItem_Hide.Text = "隐藏 ";
this.menuItem_Hide.Click += new System.EventHandler(this.menuItem_Hide_Click);
//
// menuItem_Show
//
this.menuItem_Show.Index = 1;
this.menuItem_Show.Text = "显示 ";
this.menuItem_Show.Click += new System.EventHandler(this.menuItem_Show_Click);
//
// menuItem_Aubot
//
this.menuItem_Aubot.Index = 2;
this.menuItem_Aubot.Text = "关于 ";
this.menuItem_Aubot.Click += new System.EventHandler(this.menuItem_Aubot_Click);
//
// menuItem_Exit
//
this.menuItem_Exit.Index = 3;
this.menuItem_Exit.Text = "退出 ";
this.menuItem_Exit.Click += new System.EventHandler(this.menuItem_Exit_Click);
protected override void OnClosing(CancelEventArgs e)
{
this.ShowInTaskbar = false;
this.WindowState = FormWindowState.Minimized;
e.Cancel = true;
}
protected override void OnClosing(CancelEventArgs e)
{
//this.ShowInTaskbar = false;
this.WindowState = FormWindowState.Minimized;
e.Cancel = true;
}
private void CloseCtiServer()
{
timer.Enabled = false;
DJ160API.DisableCard();
this.NotifyIcon.Visible = false;
this.Close();
this.Dispose();
Application.Exit();
}
private void HideCtiServer()
{
this.Hide();
}
private void ShowCtiServer()
{
this.Show();
this.WindowState = FormWindowState.Normal;
this.Activate();
}
private void CtiManiForm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
this.CloseCtiServer();
}
private void menuItem_Show_Click(object sender, System.EventArgs e)
{
this.ShowCtiServer();
}
private void menuItem_Aubot_Click(object sender, System.EventArgs e)
{
}
private void menuItem_Exit_Click(object sender, System.EventArgs e)
{
this.CloseCtiServer();
}
private void menuItem_Hide_Click(object sender, System.EventArgs e)
{
this.HideCtiServer();
}
private void CtiManiForm_SizeChanged(object sender, System.EventArgs e)
{
if(this.WindowState == FormWindowState.Minimized)
{
this.HideCtiServer();
}
}
private void notifyIcon1_DoubleClick(object sender,System.EventArgs e)
{
this.ShowCtiServer();
}

相关文章

  • C#算法之回文数

    C#算法之回文数

    这篇文章介绍了C#算法之回文数,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • CefSharp如何进行页面的缩放(Ctrl+滚轮)

    CefSharp如何进行页面的缩放(Ctrl+滚轮)

    CefSharp简单来说就是一款.Net编写的浏览器包,本文主要介绍了CefSharp如何进行页面的缩放,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • C#中调用Servlet示例

    C#中调用Servlet示例

    这篇文章主要介绍了C#中调用Servlet示例,本文实现通用消息接口使用servlet作为服务器端服务接口,第三方应用程序通过http post的方式调用servlet,实现与通用消息接口的调用连接,需要的朋友可以参考下
    2015-05-05
  • C#中的delegate委托类型基本学习教程

    C#中的delegate委托类型基本学习教程

    这篇文章主要介绍了C#中的delegate委托类型基本学习教程,委托是C#语言所具有的一个重要特性,需要的朋友可以参考下
    2016-01-01
  • C#泛型用法实例分析

    C#泛型用法实例分析

    这篇文章主要介绍了C#泛型用法,实例分析了C#泛型的功能、定义与使用技巧,需要的朋友可以参考下
    2015-06-06
  • C#高效反射调用方法类实例详解

    C#高效反射调用方法类实例详解

    在本篇文章中小编给大家分享的是关于C#高效反射调用方法类的相关实例内容,有兴趣的朋友们学习下。
    2019-07-07
  • C#读写txt文件多种方法实例代码

    C#读写txt文件多种方法实例代码

    这篇文章主要介绍了C#读写txt文件的小例子,大家可以参考使用
    2013-11-11
  • C#如何修改项目名图文详解

    C#如何修改项目名图文详解

    最近开发工作接近尾声,客户来要求更换项目的名称,差不多要变更整个解决方案中项目名称,引用等等,这个工作量还是很大的,这篇文章主要给大家介绍了关于C#如何修改项目名的相关资料,需要的朋友可以参考下
    2023-01-01
  • Unity实现俄罗斯方块游戏

    Unity实现俄罗斯方块游戏

    这篇文章主要为大家详细介绍了Unity实现俄罗斯方块游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • C# 开发日志本地化工具

    C# 开发日志本地化工具

    这篇文章主要介绍了C# 开发日志本地化工具的步骤,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-02-02

最新评论