C#winform任务栏显示小图标及右击操作

原文地址:https://www.cnblogs.com/Licy113/p/11994494.html

一般的开发的应用运行时,是直接的程序页面打开,想要达到微信那样的效果,还是有些东西要注意的,最近看了一些零零散散的解决方法,我就整合了一下。

 鼠标单击打开微信界面,右击微信图标会有如下图的快捷功能操作

 ********************************************

1.让右下角状态栏上显示我们的程序的小图标

①在工具箱里面找到这个控件NotifyIcon,拖进应用程序

 ②设置我们需要的属性,要在右下角状态栏显示的图标

 ③现在可以点击运行了,可以看到右下角有你刚刚添加进程序的icon图标,这个只是到了可以看的阶段还有....我们需要能点击图标打开还有右击快捷操作。

给刚刚拖进来的NotifyIcon控件添加一个MouseDoubleClick事件让它在最小化的时候能点击小图标后显示程序

 代码如下:

 

 

/// <summary> /// 状态栏小图标的鼠标点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void nIcon_Click(object sender, MouseEventArgs e) { try { if (this.WindowState == FormWindowState.Minimized)//当程序是最小化的状态时显示程序页面 { this.WindowState = FormWindowState.Normal; } this.Activate(); this.Visible = true; this.ShowInTaskbar = true; } catch (Exception ex) { MessageBox.Show(ex.Message); } }

 

 ④开始添加右下角状态栏小图标的右击操作了

找到ContextMenuStrip控件,拖进应用程序

 

设置它的一些属性,双击打开集合,添加右击菜单的两个子项,并设置子项的Name和Text的,按照你的实际需求来。编写右击菜单子项的事件,我就写了一个退出事件

 

 

/// <summary> /// 右击状态栏小图标的退出事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void smi_exit_Click(object sender, EventArgs e) { DialogResult result = MessageBox.Show("你确定要关闭吗!", "提示信息", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (result == DialogResult.OK) { // 关闭所有的线程 this.Dispose(); this.Close(); } }

 

 

 接着就是把这个ContextMenuStrip控件绑定到右下角的我的程序小图标(NotifyIcon控件)上面,绑定完就可以使用啦。 

⑤目前点击程序的右上角的关闭时,就是直接退出程序了,把它变成点击右上角的叉叉缩进右下角的状态栏,不直接退出,再次点击右下角状态栏的小图标的时候,就打开程序。

找到窗体的这个属性添加事件并写入代码

 代码如下:

 

 

/// <summary> /// 程序右上角叉叉关闭时的事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Form1_FormClosing(object sender, FormClosingEventArgs e) { try { e.Cancel = true; this.Visible = false; } catch (Exception ex) { MessageBox.Show(ex.Message); } }

 

********************************************************

扩展:C#监听键盘的按下操作  -----要设置窗体的KeyPreview属性,并且添加KeyDown事件

 

 

/// <summary> /// 键盘按Esc,隐藏程序 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyValue == 27) { //窗体隐藏 this.Hide(); } }

  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
WinForms中,可以通过覆盖窗体的CreateParams属性来实现在窗体标题栏上显示菜单。 以下是实现步骤: 1. 在窗体的CreateParams属性中添加标题栏菜单样式: ```c# protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; // 添加标题栏菜单样式 cp.Style |= 0x00000040; // WS_CAPTION | WS_SYSMENU return cp; } } ``` 2. 在窗体的HandleCreated事件中添加菜单: ```c# protected override void OnHandleCreated(EventArgs e) { base.OnHandleCreated(e); // 添加菜单 IntPtr hMenu = GetSystemMenu(this.Handle, false); int menuItemCount = GetMenuItemCount(hMenu); InsertMenu(hMenu, menuItemCount, MF_BYPOSITION | MF_SEPARATOR, 0, string.Empty); InsertMenu(hMenu, menuItemCount + 1, MF_BYPOSITION, 0x007B, "菜单项"); } ``` 其中,GetSystemMenu函数用于获取窗体的系统菜单句柄,GetMenuItemCount函数用于获取菜单项数量,InsertMenu函数用于插入菜单项。在这里,我们插入了一个分隔符和一个菜单项,菜单项的标识符为0x007B。 完整代码如下: ```c# public partial class Form1 : Form { private const int MF_BYPOSITION = 0x00000400; private const int MF_SEPARATOR = 0x00000800; [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert); [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern int GetMenuItemCount(IntPtr hMenu); [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern bool InsertMenu(IntPtr hMenu, int uPosition, int uFlags, int uIDNewItem, string lpNewItem); public Form1() { InitializeComponent(); } protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; // 添加标题栏菜单样式 cp.Style |= 0x00000040; // WS_CAPTION | WS_SYSMENU return cp; } } protected override void OnHandleCreated(EventArgs e) { base.OnHandleCreated(e); // 添加菜单 IntPtr hMenu = GetSystemMenu(this.Handle, false); int menuItemCount = GetMenuItemCount(hMenu); InsertMenu(hMenu, menuItemCount, MF_BYPOSITION | MF_SEPARATOR, 0, string.Empty); InsertMenu(hMenu, menuItemCount + 1, MF_BYPOSITION, 0x007B, "菜单项"); } } ``` 运行程序后,可以看到在窗体的标题栏上显示了菜单项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值