【C#】 一个窗体能够显示、最小化、最大化、关闭时分别触发方法

在C#的WPF应用程序中,窗体(即继承自System.Windows.Window的类)能够通过处理以下事件来响应显示、最小化、最大化和关闭操作:

1.显示

窗体显示时没有直接对应的事件,但你可以通过覆盖OnLoaded方法或订阅Loaded事件来实现在窗体加载完成并显示时执行某些操作。

cs 复制代码
public MyWindow()
{
    InitializeComponent();
    Loaded += MyWindow_Loaded;
}

private void MyWindow_Loaded(object sender, RoutedEventArgs e)
{
    // 在这里放置窗体显示时要执行的代码
}

2.最小化

可以通过订阅StateChanged事件并检查WindowState属性来检测窗体是否变为最小化状态。

cs 复制代码
public MyWindow()
{
    InitializeComponent();
    StateChanged += MyWindow_StateChanged;
}

private void MyWindow_StateChanged(object sender, EventArgs e)
{
    if (WindowState == WindowState.Minimized)
    {
        // 窗体被最小化时执行的代码
    }
}

3.最大化

同样,通过StateChanged事件来检测窗体是否变为最大化状态。

cs 复制代码
private void MyWindow_StateChanged(object sender, EventArgs e)
{
    if (WindowState == WindowState.Maximized)
    {
        // 窗体被最大化时执行的代码
    }
}

4.关闭

可以通过订阅ClosingClosed事件来处理窗体关闭前后的逻辑。

Closing事件在窗体开始关闭过程时触发,此时还可以取消关闭操作。

cs 复制代码
public MyWindow()
{
    InitializeComponent();
    Closing += MyWindow_Closing;
}

private void MyWindow_Closing(object sender, CancelEventArgs e)
{
    // 可以在这里决定是否取消关闭操作
    // e.Cancel = true; // 设置为true将取消关闭
    // 窗体关闭前执行的代码
}

Closed事件在窗体已经关闭后触发,不能取消关闭操作。

cs 复制代码
public MyWindow()
{
    InitializeComponent();
    Closed += MyWindow_Closed;
}

private void MyWindow_Closed(object sender, EventArgs e)
{
    // 窗体已经关闭后执行的代码
}
相关推荐
李高钢4 小时前
REST vs gRPC 选型对比与迁移实践:从原理到落地
c#·集成·winforms
一个帅气昵称啊6 小时前
.Net C# AI智能体开发-快速开始
开发语言·c#·.net
半亩码田8 小时前
C#转Python第3.6篇:Python 的 @property 比 C# 的 get/set 更灵活
java·python·c#
楠楠子呀13 小时前
独立站聊天转化全链路:从二维码引流到数据复盘
java·javascript·数据仓库·python·c#·自动化·etl
csdn_aspnet14 小时前
C# 第k个最小元素(K’th Smallest Element)
算法·c#·排序算法
影寂ldy14 小时前
Modbus-ASCII 协议 + LRC校验
笔记·网络协议·c#
自己的九又四分之三站台15 小时前
C# 接入 RasterLite2:从原生 DLL 加载到 Coverage、Section、Tile 验证
开发语言·c#·地理信息
好名字都被猪取了-15 小时前
# C# 全栈开发资源包(.NET8/.NET10)
c#
李高钢15 小时前
开源控件库 HandyControl 介绍与简单实践:让 WPF 界面告别“上个世纪“
开源·wpf
淡海水17 小时前
03-05-线性-Array-List-LinkedList与Span-所有权与成本模型选型
c#·list·编译·array·clr·机器码