C#禁止双击标题栏


        protected override void WndProc(ref Message m)
        {

            if (m.Msg != 0xA3)

                base.WndProc(ref m);

        }

C#禁用窗口标题栏双击导致的退出或最大化功能,可以通过设置窗体的 `MaximizeBox` 属性以及修改窗口样式来实现。对于 Windows Forms 应用程序,推荐的方式是通过控制窗体的属性和样式,防止用户通过双击标题栏触发最大化或退出行为。 ### 设置 MaximizeBox 属性 可以通过将 `MaximizeBox` 设置为 `false` 来禁用最大化按钮,从而防止用户通过双击标题栏实现窗口最大化: ```csharp this.MaximizeBox = false; ``` 该设置会禁用最大化按钮,同时也会阻止双击标题栏时触发最大化行为[^1]。 ### 自定义窗口样式禁用双击行为 如果需要更精细地控制窗口行为,可以通过 Win32 API 修改窗口样式,移除 `WS_SYSMENU` 样式以禁用系统菜单(包括关闭按钮)和标题栏双击响应: ```csharp using System.Runtime.InteropServices; public partial class MainForm : Form { [DllImport("user32.dll")] private static extern int GetWindowLong(IntPtr hWnd, int nIndex); [DllImport("user32.dll")] private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong); private const int GWL_STYLE = -16; private const int WS_SYSMENU = 0x00080000; public MainForm() { InitializeComponent(); this.Load += MainForm_Load; } private void MainForm_Load(object sender, EventArgs e) { IntPtr hWnd = this.Handle; int style = GetWindowLong(hWnd, GWL_STYLE); style &= ~WS_SYSMENU; // 移除系统菜单,禁用关闭按钮和双击退出 SetWindowLong(hWnd, GWL_STYLE, style); this.Refresh(); } } ``` 此方法通过移除系统菜单样式,间接禁用标题栏双击事件响应。 ### 注意事项 - 禁用系统菜单后,窗口将无法通过标题栏关闭按钮关闭,需确保提供其他方式让用户关闭窗口。 - 若仅需禁用最大化行为,不建议完全移除系统菜单,应优先使用 `MaximizeBox = false` 的方式。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值