zoukankan      html  css  js  c++  java
  • C# winForm程序开机启动和托盘显示 (转http://blog.csdn.net/xinyue3054/article/details/6599508)

    这段时间一直进行cs项目,故整理下开机自动运行、托盘、显示、隐藏。

            (1)、在窗口上点击关闭按钮或者最小化时将托盘显示;

            (2)、双击托盘图标显示窗口;

            (3)、右键点击托盘图标提供三个菜单选项,“退出”、“隐藏”、“显示”;

            (4)、程序可以设置开机启动,隐藏任务栏显示。就这四个小功能。

    1、建一个WinForm程序—FormAuto,将其属性ShowInTaskbar改为false,这样程序将不会在任务栏中显示;将MaximizeBox属性设置为false,屏蔽掉最大化按钮;把StartPosition属性改为CerternScreen,这样程序运行后,窗口将会居中显示。

    2、在工具栏中的公共控件里,拖入NotifyIcon控件—notifyIconAutoRun,这个是程序运行任务栏右侧通知区域图标显示控件。

    3、在工具栏中的菜单和工具栏里,拖入ContextMenuStrip—contextMenuStripAuto,这个控件是右击时关联菜单。

    4、右键testNotifyIcon选择属性,将其属性ContextMenuStrip改加为contextMenuStripAuto,这个时候1和2两个步骤的两个控件就关联了,用于完成上面(3)功能。

    5、右键contextMenuStripAuto选择属性,进入Items,然后点击“添加”,这里添加三个菜单选项:exitMenuItem、hideMenuItem、showMenuItem,同时分别将其Text属性改为:退出、隐藏和显示。

    准备工作就这些,下面是大致代码:

    1)双击FormAuto,即添加Load事件然后

            private void FormAuto_Load(object sender, EventArgs e)
            {
                //无法在Load事件隐藏窗体
                //Closed事件已经释放
                //唯独Closing事件中可以做到
                try
                {
                    //程序运行位置
                    string R_startPath = Application.ExecutablePath;
                    //对应于HKEY_LOCAL_MACHINE主键
                    RegistryKey R_local = Registry.LocalMachine;
                    //开机自动运行
                    RegistryKey R_run = R_local.CreateSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
                    R_run.SetValue("MyAuto", R_startPath);
                    R_run.Close();
                    R_local.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                MessageBox.Show("开机自动运行!");
            }

    2)添加Form_Closing,SizeChanged事件

            private void FormAuto_FormClosing(object sender, FormClosingEventArgs e)
            {
                //取消关闭逻辑
                e.Cancel = true;
                this.Hide();
            }

            private void FormAuto_SizeChanged(object sender, EventArgs e)
            {
                //最小化处理
                if (this.WindowState == FormWindowState.Minimized)
                {
                    this.Hide();
                    //不在任务栏显示窗体
                    this.ShowInTaskbar = false;
                }
            }

    3)给notifyIconAutoRun添加MouseDoubleClick事件

            private void notifyIconAutoRun_MouseDoubleClick(object sender, MouseEventArgs e)
            {
                //双击显示
                if (e.Button == MouseButtons.Left)
                {
                    this.Show();
                    this.WindowState = FormWindowState.Normal;
                    this.Activate();
                }
            }

    4)、进入FormAuto单击contextMenuStripAuto,然后可以看到“退出”、“隐藏”、“显示”,分别双击,添加相应的事件

            private void exitMenuItem_Click(object sender, EventArgs e)
            {
                if (MessageBox.Show("你确定要退出终端服务程序吗?", "确认", MessageBoxButtons.OKCancel,
                    MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK)
                {
                    notifyIconAutoRun.Visible = false;
                    this.Close();
                    this.Dispose();
                    Application.Exit();
                }       
            }

            private void showMenuItem_Click(object sender, EventArgs e)
            {
                this.Hide();       
            }

            private void hideMenuItem_Click(object sender, EventArgs e)
            {
                this.Show();
                this.WindowState = FormWindowState.Normal;
                this.Activate();
            }


     

     

  • 相关阅读:
    oracle 用户与表空间关系
    关于数据库主从表、主键PRIMARY KEY 外键约束 FOREIGN KEY 约束----NOT NULL,DEFAULT,CHECK
    数据库中主键与外键
    MySQL性能测试工具sysbench的安装和使用
    Linux VNC server 安装配置
    Linux 用户管理【UID和GID】
    性能测试之稳定性测试
    NoSql Cassandra
    数据库事务处理原理
    思考问题
  • 原文地址:https://www.cnblogs.com/yinxingyeye/p/4229274.html
Copyright © 2011-2022 走看看