C#窗体的基本事件,禁止调整大小等

本文介绍如何通过设置FormBorderStyle为FixedDialog来固定窗口大小,并禁用最大化和最小化按钮的方法。

1、窗口默认可以最大化,或者可以调整窗口大小,这和我们的要求不同。我们再来进一步的调整。

2、点击窗口,选择【属性】界面。在这里可以对窗口的很多设置进行调整。

3、找到【FormBorderStyle】选项,在选项列表中选择【FixedDialog】,这样就可以固定窗口大小,禁止对窗口的自由调整了。

4、再来隐藏窗口的最大化和最小化按钮,在选项中找到【MaximizeBox】【MinimizeBox】,默认这两个选项都是【true】,这里都修改为【false】。

5、将【MaximizeBox】【MinimizeBox】两个选项都修改为【false】。

C#中,有多种方法可以禁止改变窗体大小,以下是具体介绍: ### 代码设置方式 #### 方式一:设置 `FormBorderStyle` 属性 在代码中设置窗体的 `FormBorderStyle` 属性为 `FormBorderStyle.FixedSingle`,并可选择禁用最大化和最小化按钮。示例代码如下: ```csharp using System; using System.Windows.Forms; namespace PreventResizeForm { public class MainForm : Form { public MainForm() { // 设置窗体标题 this.Text = "禁止改变窗体大小"; // 设置窗体大小 this.Size = new System.Drawing.Size(400, 300); // 禁止改变窗体大小 this.FormBorderStyle = FormBorderStyle.FixedSingle; // 可选:禁止最大化按钮 this.MaximizeBox = false; // 可选:禁止最小化按钮 // this.MinimizeBox = false; } [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); } } } ``` 这种方式简单直接,通过设置窗体的边框样式来固定窗体大小禁止用户通过拖动边框改变窗体大小 [^2]。 #### 方式二:重写 `WndProc` 方法禁止拖动和双击标题栏改变大小 通过重写 `WndProc` 方法,截获鼠标左键在标题栏按下和双击的消息,阻止其默认行为,从而禁止通过拖动、双击标题栏改变窗体大小。示例代码如下: ```csharp public const int WM_NCLBUTTONDBLCLK = 0xA3; const int WM_NCLBUTTONDOWN = 0x00A1; const int HTCAPTION = 2; protected override void WndProc(ref Message m) { if (m.Msg == WM_NCLBUTTONDOWN && m.WParam.ToInt32() == HTCAPTION) return; if (m.Msg == WM_NCLBUTTONDBLCLK) return; base.WndProc(ref m); } ``` 该方法主要解决了在窗体初始化时禁用最大化按钮并最大化后,仍能通过拖动、双击标题栏改变窗体大小的问题 [^1]。 #### 方式三:截获 Windows 消息 通过重写 `WndProc` 方法,截获系统命令消息,对最小化、还原、最大化等操作进行处理,以禁止改变窗体大小。示例代码如下: ```csharp protected override void WndProc(ref Message m) { switch (m.Msg) { case WM_SYSCOMMAND: switch (m.WParam.ToInt32()) { case SC_MINIMIZE: base.WndProc(ref m); // 捕获最小化消息 break; case SC_RESTORE: base.WndProc(ref m); // 捕获还原消息 break; case SC_MAXIMIZE: this.Width = this.panel1.Width + this.textBox_Receiv.Width + 100; this.Height = this.panel1.Height * 20; // base.WndProc(ref m); // 捕获最大化消息 break; case SC_SIZEChange: // 处理大小改变消息 break; } break; } base.WndProc(ref m); } ``` 此方法可以对各种系统命令消息进行精细控制,根据不同的消息类型进行相应的处理 [^4]。 ### 可视化界面设置方式 在 Visual Studio 的设计界面中,点击窗口,选择【属性】界面,找到【FormBorderStyle】选项,在选项列表中选择【FixedDialog】,即可固定窗口大小禁止对窗口进行自由调整 [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值