当前位置: 首页 > news >正文

WPF 全屏显示实现(无标题栏按钮 + 自定义退出按钮)

WPF 全屏显示实现(无标题栏按钮 + 自定义退出按钮)

完整实现代码

MainWindow.xaml

<Window x:Class="FullScreenApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="全屏应用" WindowState="Maximized" WindowStyle="None"ResizeMode="NoResize" Background="Black"><Grid><!-- 主内容区域 --><TextBlock Text="全屏应用演示" HorizontalAlignment="Center" VerticalAlignment="Center"Foreground="White" FontSize="36"/><!-- 自定义退出按钮 --><Button x:Name="ExitButton" Content="退出程序" Width="100" Height="40"HorizontalAlignment="Right" VerticalAlignment="Bottom"Margin="20"Click="ExitButton_Click"/></Grid>
</Window>

MainWindow.xaml.cs

using System.Windows;namespace FullScreenApp
{public partial class MainWindow : Window{public MainWindow(){InitializeComponent();// 确保窗口全屏this.WindowState = WindowState.Maximized;this.WindowStyle = WindowStyle.None;// 可选:防止其他窗口覆盖this.Topmost = true;}private void ExitButton_Click(object sender, RoutedEventArgs e){// 退出应用程序Application.Current.Shutdown();}// 可选:响应ESC键退出protected override void OnKeyDown(KeyEventArgs e){if (e.Key == Key.Escape){Application.Current.Shutdown();}base.OnKeyDown(e);}}
}

进阶功能

1. 添加淡入淡出动画效果

<Window.Resources><Storyboard x:Key="FadeOut"><DoubleAnimation Storyboard.TargetProperty="Opacity"From="1" To="0" Duration="0:0:0.3"/></Storyboard>
</Window.Resources>

然后在退出按钮点击事件中:

private async void ExitButton_Click(object sender, RoutedEventArgs e)
{var storyboard = (Storyboard)FindResource("FadeOut");storyboard.Begin(this);await Task.Delay(300); // 等待动画完成Application.Current.Shutdown();
}

2. 防止误操作退出(添加确认对话框)

private void ExitButton_Click(object sender, RoutedEventArgs e)
{var result = MessageBox.Show("确定要退出程序吗?", "确认退出", MessageBoxButton.YesNo, MessageBoxImage.Question);if (result == MessageBoxResult.Yes){Application.Current.Shutdown();}
}

3. 多显示器支持(在主显示器全屏)

public MainWindow()
{InitializeComponent();// 获取主显示器信息var screen = System.Windows.Forms.Screen.PrimaryScreen;// 设置窗口位置和大小this.Left = screen.Bounds.Left;this.Top = screen.Bounds.Top;this.Width = screen.Bounds.Width;this.Height = screen.Bounds.Height;this.WindowStyle = WindowStyle.None;this.WindowState = WindowState.Normal; // 必须设置为Normal才能自定义大小
}

注意事项

  1. 窗口样式WindowStyle="None" 会移除所有窗口装饰,包括标题栏和边框
  2. 调整大小ResizeMode="NoResize" 防止用户调整窗口大小
  3. 任务栏:全屏窗口默认会覆盖任务栏,如需显示任务栏,请调整窗口大小
  4. 快捷键:添加ESC键退出功能可以提升用户体验
  5. 性能:全屏应用通常需要优化渲染性能,特别是包含动画或视频时
http://www.xdnf.cn/news/623233.html

相关文章:

  • 爬虫核心概念与工作原理详解
  • Redis学习专题(五)缓存穿透、缓存击穿、缓存雪崩
  • ​《Nacos终极指南:集群配置+负载均衡+健康检查+配置中心全解析,让微服务稳如老狗!》​
  • SQLAlchemy 2.0 查询使用指南
  • python使用pycharm和conda 设置默认使用清华镜像
  • 枚举类扩充处理
  • 【Qt】Qt 5.9.7使用MSVC2015 64Bit编译器
  • 基于SamOutV8的序列生成模型实现与分析
  • 如何把vue项目部署在nginx上
  • 用 AI 让学习更懂你:如何打造自动化个性化学习系统?
  • Linux10正式版发布,拥抱AI了!
  • PCB设计实践(二十七)电感的形态分类与应用场景深度解析
  • 【Linux】进程基本概念与基本操作
  • wordpress主题开发中常用的12个模板文件
  • 黑马k8s(十五)
  • 【触想智能】什么是工控一体机,工控一体机有什么用途?
  • 前端框架6
  • 折半搜索【2024华为智联杯 K.时光】
  • 安卓无障碍脚本开发全教程
  • Android-Glide学习总结
  • 当AI Agent遇上聊天机器人:一场关于效率与能力的较量
  • Day 0017:Web漏洞扫描(OpenVAS)解析
  • 【Java学习笔记】代码块
  • Express笔记
  • 塔能节能平板灯:点亮苏州某零售工厂节能之路
  • Oracle表索引变为不可用状态了怎么办
  • UniApp === H5实现主题切换
  • 【检索增强生成(RAG)全解析】从理论到工业级实践
  • commonmark.js 源码阅读(二) - Inline Parser
  • leetcode 两两交换链表中的节点 java