如何禁用双击窗体图标关闭窗体

这个问题来自论坛提问,.Net由于对WindowsAPI的透明度增强,很多Winform开发者都不太了解经典的win32消息方面的知识。

所有窗体上的鼠标反映都可以用WndProc拦截,除了系统菜单、标题栏、系统按纽还包括客户区。

  1. using  System;
  2. using  System.Windows.Forms;
  3. using  System.Runtime.InteropServices;
  4. namespace  WindowsApplication1
  5. {
  6.      public  partial  class  Form1 : Form
  7.     {
  8.          public  Form1()
  9.         {
  10.             InitializeComponent();
  11.             
  12.         }
  13.         [DllImport( "user32.d
在WPF中,要实现托盘双击显示窗体的功能,可以按照以下几个步骤进行操作。 首先,在XAML文件中添加一个System.Windows.Forms的命名空间引用,这是因为托盘图标使用的是Windows Forms的控件。 然后,在XAML文件中添加一个NotifyIcon控件,用于创建托盘图标。可以设置Icon(图标)、Text(鼠标悬停时显示的文本)等属性。 接下来,在窗体的Loaded事件中,使用以下代码实现托盘图标的显示: ```csharp private System.Windows.Forms.NotifyIcon notifyIcon; private void Window_Loaded(object sender, RoutedEventArgs e) { notifyIcon = new System.Windows.Forms.NotifyIcon(); notifyIcon.Icon = new System.Drawing.Icon("icon.ico"); // 设置托盘图标 notifyIcon.Text = "双击显示窗体"; // 设置鼠标悬停时显示的文本 notifyIcon.DoubleClick += NotifyIcon_DoubleClick; // 添加双击事件处理函数 // 显示托盘图标 notifyIcon.Visible = true; } ``` 在双击事件处理函数NotifyIcon_DoubleClick中,可以使用以下代码实现窗体的显示: ```csharp private void NotifyIcon_DoubleClick(object sender, EventArgs e) { this.Show(); // 显示窗体 this.WindowState = WindowState.Normal; // 恢复到正常状态 } ``` 需要注意的是,在窗体的Closing事件中,应添加以下代码,以确保在关闭窗体时托盘图标也被释放: ```csharp private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { notifyIcon.Dispose(); // 释放托盘图标资源 } ``` 通过以上步骤,就可以实现在WPF中双击托盘图标显示窗体的功能了。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值