当前位置: 首页 > 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. 性能:全屏应用通常需要优化渲染性能,特别是包含动画或视频时

相关文章:

  • 2025软考架构师 DeepSeek 案例预测
  • 在WPF中添加动画背景
  • Android-OkHttp与Retrofit学习总结
  • 事务基础概念
  • HarmonyOS优化应用内存占用问题性能优化四
  • 奇好 PDF安全加密 + 自由拆分合并批量处理 OCR 识别
  • 常见嵌入式软件架构
  • JavaSE常用API之Runtime类:掌控JVM运行时环境
  • UDP和TCP示例程序
  • 机器学习算法-sklearn源起
  • 【JVM 05-JVM内存结构之-堆】
  • RabbitMQ 应用
  • Python知识图谱工具全解析
  • SDL2常用函数:SDL_LoadBMP 数据结构详解与示例
  • ABP VNext + Orleans:Actor 模型下的分布式状态管理最佳实践
  • 基于Java+MySQL 实现(Web)网络考试系统
  • C++篇——C++11的更新内容
  • github开源版pymol安装(ubuntu22.04实战版)
  • 最宽温度范围文本格式PT1000分度表-200~850度及PT1000铂电阻温度传感器计算公式
  • BLIP论文笔记
  • 韩国flash网站/百度seo关键词优化方案
  • 郑州高档网站建设/全网营销系统怎么样
  • 做网站用什么服务器/友情链接多久有效果
  • 怎么做钓qq密码网站/发稿软文公司
  • 网站必须备案/查询域名网站
  • asp.net旅游网站开发文档/seo关键词是什么意思