c# winfrom 取消窗体最大化事件
时间: 2024-09-15 15:13:17 浏览: 78
C# Winform实现捕获窗体最小化、最大化、关闭按钮事件的方法
5星 · 资源好评率100%
在 C# 中,如果你想要取消窗体(Form)默认的双击最大化(Maximize)事件,你可以通过重写 `Form.ClientSizeChanged` 或 `Form.FormClosed` 事件,并在其中阻止原始的最大化操作。以下是两种方法的示例:
1. 重写 `ClientSizeChanged` 事件:
```csharp
public partial class YourForm : Form
{
private bool isBeingMaximized = false;
public YourForm()
{
InitializeComponent();
ClientSizeChanged += OnClientSizeChanged;
}
private void OnClientSizeChanged(object sender, EventArgs e)
{
if (!isBeingMaximized && ClientSize.Width == Width && ClientSize.Height == Height) // 检查是否正在最大化过程中
return;
if (WindowState == FormWindowState.Maximized)
WindowState = FormWindowState.Normal; // 取消最大化
// 如果窗口大小改变是因为其他原因(如调整分辨率),则处理正常
}
}
```
2. 重写 `FormClosed` 事件:
```csharp
public partial class YourForm : Form
{
protected override void OnClosing(CancelEventArgs e)
{
if (e.CloseReason == CloseReason.UserClosing && IsMaximized) // 阻止用户手动关闭时的最大化
{
e.Cancel = true;
WindowState = FormWindowState.Normal;
}
base.OnClosing(e);
}
}
```
在这里,我们设置了标志 `isBeingMaximized` 来跟踪窗口是否正在进行最大化,避免误触发。
阅读全文