2 notebook719778239 notebook719778239 于 2015.06.09 13:43 提问

C#winform实现系统托盘后台运行功能

C#winform实现系统托盘后台运行功能,就是一运行,就直接到系统托盘的位置,程序在后台运行

4个回答

notebook719778239
notebook719778239   2015.06.09 14:05
已采纳

窗体的Shown方法里加上this.Hide();就可以了

caozhy
caozhy 真是无赖一个,回答了,然后自己采纳自己。
大约 3 年之前 回复
caozhy
caozhy   Ds   Rxr 2015.06.09 13:48

用NotifyIcon控件。在其中的click写this.Show
在FormLoad里面写this.Hide

edouardzyc
edouardzyc   2015.06.09 13:50

NotifyIcon托盘控件
在form_load方法里面 this.hide(); 隐藏主界面

sxjiangdongqin
sxjiangdongqin   2015.06.09 13:47

对这个需求完全可以在单击“关闭”按钮的时候弹出一个对话框,来让用户确定是否真的要退出。这是一个很好的解决方法,并且实现也是很容易的。但是人家不想这样,想要拥有类似QQ在托盘区后台运行的那种效果,没办法,只能想办法来实现了。www.2cto.com

其实,这个在网上也有很多的实现方法,但是我试了试有些直接复制过来并不能直接运行,或者能运行的吧又没有注释。今天在这里就给大家贴一下我的代码,也有不足之处,希望大家给出意见.

[csharp]

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Windows;

namespace winform窗体托盘后台运行

{

public partial class Form1 : Form   

{  

    //这里在窗体上没有拖拽一个NotifyIcon控件,而是在这里定义了一个变量  

    private NotifyIcon notifyIcon = null;  



    public Form1()  

    {  

        InitializeComponent();  

        //调用初始化托盘显示函数  

        InitialTray();  

    }  



    private void Form1_Load(object sender, EventArgs e)  

    {  

        //这里写其他代码  

    }  www.2cto.com



    /// <summary>  

    /// 窗体关闭的单击事件  

    /// </summary>  

    /// <param name="sender"></param>  

    /// <param name="e"></param>  

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)  

    {  

        e.Cancel = true;  

        //通过这里可以看出,这里的关闭其实不是真正意义上的“关闭”,而是将窗体隐藏,实现一个“伪关闭”  

        this.Hide();  

    }  



    private void InitialTray()  

    {  

        //隐藏主窗体  

        this.Hide();  



        //实例化一个NotifyIcon对象  

        notifyIcon = new NotifyIcon();  

        //托盘图标气泡显示的内容  

        notifyIcon.BalloonTipText = "正在后台运行";     

        //托盘图标显示的内容  

        notifyIcon.Text = "窗体托盘后台运行测试程序";  

        //注意:下面的路径可以是绝对路径、相对路径。但是需要注意的是:文件必须是一个.ico格式  

        notifyIcon.Icon = new System.Drawing.Icon("E:/ASP项目/images/3.5 inch Floppy.ico");  

        //true表示在托盘区可见,false表示在托盘区不可见  

        notifyIcon.Visible = true;  

        //气泡显示的时间(单位是毫秒)  

        notifyIcon.ShowBalloonTip(2000);              

        notifyIcon.MouseClick += new System.Windows.Forms.MouseEventHandler(notifyIcon_MouseClick);  



        ////设置二级菜单  

        //MenuItem setting1 = new MenuItem("二级菜单1");  

        //MenuItem setting2 = new MenuItem("二级菜单2");  

        //MenuItem setting = new MenuItem("一级菜单", new MenuItem[]{setting1,setting2});  



        //帮助选项,这里只是“有名无实”在菜单上只是显示,单击没有效果,可以参照下面的“退出菜单”实现单击事件  

        MenuItem help = new MenuItem("帮助");  



        //关于选项  

        MenuItem about = new MenuItem("关于");  



        //退出菜单项  

        MenuItem exit = new MenuItem("退出");  

        exit.Click += new EventHandler(exit_Click);  



        ////关联托盘控件  

        //注释的这一行与下一行的区别就是参数不同,setting这个参数是为了实现二级菜单  

        //MenuItem[] childen = new MenuItem[] { setting, help, about, exit };  

        MenuItem[] childen = new MenuItem[] {help,about,exit};  

        notifyIcon.ContextMenu = new ContextMenu(childen);  



        //窗体关闭时触发  

        this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);  

    }  



    /// <summary>  

    /// 鼠标单击  

    /// </summary>  

    /// <param name="sender"></param>  

    /// <param name="e"></param>  

    private void notifyIcon_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e)  

    {  

        //鼠标左键单击  

        if (e.Button == MouseButtons.Left)  

        {  

            //如果窗体是可见的,那么鼠标左击托盘区图标后,窗体为不可见  

            if (this.Visible == true )  

            {  

                this.Visible = false;  

            }  

            else  

            {  

                this.Visible = true;  

                this.Activate();  

            }  

        }  

    }  



    /// <summary>  

    /// 退出选项  

    /// </summary>  

    /// <param name="sender"></param>  

    /// <param name="e"></param>  

    private void exit_Click(object sender, EventArgs e)  

    {  

        //退出程序  

       System.Environment.Exit(0);    

    }  

}  

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
[C#]WinFrom中实现最小化至系统托盘
刚在写个程序,遇到个小问题,就是当点击最小化按钮时,如何把程序最小化到系统托盘里去。其实这样的例子在很多软件上面都可以见到的,但刚开始找属性时并没有任何和系统托盘有关的,找了一下事件,也没有发现有关最小化按钮点击的事件。郁闷中,于是上网搜索了一下,才发现原来有个叫NotifyIcon的控件(汗一个,再BS自己一个,以前怎么没发现)。而最小化的事件也可以换种思路去实现(用SizeCh
Swing实现系统托盘功能
private SystemTray tray;//定义系统托盘 private TrayIcon trayIcon;//定义系统托盘图标 private PopupMenu popup=new PopupMenu()//定义系统托盘图标弹出菜单 private MenuItem mi=new MenuItem("菜单项"); popup.add(mi);//将菜单项添加到菜单
后台运行系统托盘功能
后台运行系统托盘功能,有注释,我写的最新一篇里有专门解释这个
MFC系统托盘的实现
通常电脑里边的软件,当你打开后会在电脑最右下角的任务栏上生成一个系统托盘,当你点击最小化或者点击关闭按钮后,若想恢复窗口,可以左键双击或者单机这个系统图标,同时鼠标右键点击,又会有其他的菜单弹出,比如退出。 我看着感觉还是挺酷炫的,所以打算也在我的程序里边添加一个这样的功能。下边我把我自己探索的过程记录一下: 首先,我们需要用到NOTIFYICONDATA类,它是我们实现系统托盘的核心。关于这个
C#-WinForm设置托盘程序
背景现在很多程序都有这样的托盘程序 窗体关闭时,并不真正关闭程序,只是任务栏不显示该应用程序,在右下侧托盘里显示; 双击托盘,窗体还原; 右击窗体,出现托盘菜单,实现最小化,最大户,还原,退出等。 这样的功能C#winform怎样实现呢 ?实现WinForm中托盘菜单由NotifyIcon控件来实现,右键菜单由contextMenuStrip来实现,我们将二者相关联,即可实现我们所期望功能的
java中系统托盘的实现
很明显,JAVA中的系统托盘,如果要实现,重要的是两个类,一个是SystemTray,而另一个是TrayIcon。需要为TrayIcon设置好图片,它需要显示的信息以及右键点击的PopupMenu.PopupMenu的使用很简单,就是将需要的MenuItem添加入PopupMenu中。以下是一段示例代码,用于表明系统托盘如何实现。import java.awt.*; import java.awt.TrayIcon.MessageType; import java.awt.event.*; imp
C#winform 实现PDF阅读功能
C#winform 实现PDF阅读功能 C#winform 实现PDF阅读功能 C#winform 实现PDF阅读功能
在RCP中实现系统托盘功能
在RCP中实现系统托盘功能在RCP中加入系统托盘功能,类似msn和QQ。功能就不说了。在RCP的WorkbenchWindowAdvisor的postWindowOpen()中创建系统托盘,另外要override preWindowShellClose()方法,否则按程序右上角的X,整个程序就会被关闭,重写后实现程序最小化的功能。ApplicationWorkbenchWindowAd
c#winform中怎么将程序最小化到系统托盘
c#winform中怎么将程序最小化到系统托盘
C# WinForm窗口最小化到系统托盘
注:本程序是在VS2005基础上写的。1。如果不想让程序在任务栏中显示,请把窗体的属性ShowInTaskbar设置为false;2。如果想让程序启动时就最小化,请设置窗体的属性WindowState设置为Minimized。(Minimized 最小化,Normal正常启动,Maximized最大化)3。拉一个NotifyIcon控件notifyIcon,为控件notifyIcon的