zoukankan      html  css  js  c++  java
  • C# winForm程序开机启动和托盘显示

    这段时间一直在学习C#,看了书然后又在网上看了N多大神些的blog,然后自己学着做了一个像QQ托盘图标那样的小功能的Demo:

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

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

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

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

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

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

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

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

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

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

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

    privatevoid Form1_Load(object sender, EventArgs e)
    {
    testNotifyIcon.Icon
    =new Icon("e:\MyPicture\testIcon.ico");
    //取得程序路径
    string startup = Application.ExecutablePath;

    //class Micosoft.Win32.RegistryKey. 表示Window注册表中项级节点,此类是注册表装
    RegistryKey rKey = Registry.LocalMachine;
    RegistryKey autoRun
    = rKey.CreateSubKey(@"SOFTWAREMicrosoftWindowsCurrentVersionRun");
    try
    {
    autoRun.SetValue(
    "BookServer", startup);
    rKey.Close();
    }
    catch (Exception exp)
    {
    MessageBox.Show(exp.Message.ToString(),
    "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    }

    添加Form_Closing,SizeChanged事件

    private void Form1_FormClosing(object sender, FormClosingEventArgs e) //关闭按钮事件
            {
                e.Cancel = true;
                this.Hide();
            }

            private void Form1_SizeChanged(object sender, EventArgs e) //最小化事件按钮
            {
                this.Hide();
            }

    2)、给testNotifyIcon添加MouseDoubleClick事件


    privatevoid testNotifyIcon_MouseDoubleClick(object sender, MouseEventArgs e) // 左键双击,显示
    {
    if (e.Button == MouseButtons.Left)
    {
    this.Show();
    this.WindowState = FormWindowState.Normal;
    this.Activate();
    }
    }

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


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

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

    privatevoid hideMenuItem_Click(object sender, EventArgs e)
    {
    this.Show();
    this.WindowState = FormWindowState.Normal;
    this.Activate();
    }
  • 相关阅读:
    31 把数组排成最小的数 + 仿函数的写法就记忆这个就行了
    30 整数中1出现的次数(从1到n整数中1出现的次数)这题很难要多看*
    29 连续子数组的最大和
    c/c++ struct的大小以及sizeof用法
    28 最小的K个数
    27 数组中出现次数超过一半的数字
    26 字符串的排列
    Python 实例2—购物车
    python_threading模块实现多线程详解(转)
    Ubuntu 16.04 安装Postman
  • 原文地址:https://www.cnblogs.com/guohu/p/13575044.html
Copyright © 2011-2022 走看看