【C#/WPF】窗体定时自动关闭
需求:打开WPF项目后,展示3秒钟产品Logo后,进入主界面MainWindow。(类似于安卓应用打开时的闪屏页SplashPage)
思路:在进入MainWindow后新建一个Window窗体,窗体的背景设置为Logo图片,窗体设置为最大化、Z轴置顶、不可调整宽高、不显示状态栏。设置一个DispatcherTimer定时器,3秒后关闭窗体。
MainWindow.xaml.cs 后台代码的主要逻辑:
private Window window;
public MainWindow()
{
InitializeComponent();
// 界面加载完成后触发的事件
this.Loaded += new RoutedEventHandler(ShowLoginWindow);
}
private void ShowLoginWindow(object sender, RoutedEventArgs e)
{
// 弹窗显示Logo 3秒后关闭该弹窗自动关闭
window = new Window();
// 经测试,以下设置无法做到窗体跟屏幕一样大,窗体四周会留下几个像素的边距
//double screenHeight = SystemParameters.FullPrimaryScreenHeight;
//double screenWidth = SystemParameters.FullPrimaryScreenWidth;
//window.Width = screenWidth;
//window.Height = screenHeight;
//window.Top = (screenHeight - window.Height) / 2;
//window.Left = (screenWidth - window.Width) / 2;
window.Topmost = true; // 置顶
window.WindowStartupLocation = WindowStartupLocation.CenterScreen; // 屏幕中心
window.WindowState = WindowState.Maximized; // 最大化
window.ResizeMode = ResizeMode.NoResize; // 不能调宽高
window.WindowStyle = WindowStyle.None; // 无窗体样式,即可不显示状态栏
// 背景是Logo图片
ImageBrush brush = new ImageBrush();
brush.ImageSource = new BitmapImage(new Uri("pack://application:,,,/HomeDecorationPSD;component/Presentation/Resources/Images/app_logo.jpg")); // 这是绝对路径
window.Background = brush;
// 设置窗体3秒后自动关闭
StartCloseTimer();
window.ShowDialog();
}
private void StartCloseTimer()
{
DispatcherTimer timer = new DispatcherTimer();
//timer.Interval = TimeSpan.FromSeconds(3); // 3秒
// 为了方便测试,可以把这个秒数写到App.config配置文件中
double t = double.Parse(ConfigurationManager.AppSettings["LOGO_WINDOW_AUTO_CLOSE_TIMER"]);
timer.Tick += TimerTick; // 注册计时器到点后触发的回调
timer.Start();
}
private void TimerTick(object sender, EventArgs e)
{
DispatcherTimer timer = (DispatcherTimer)sender;
timer.Stop();
timer.Tick -= TimerTick; // 取消注册
window.Close();
}
private void CloseLogoWindow(object state)
{
// 关闭Logo窗体
window.Close();
}
配置文件App.config 添加内容
<appSettings>
...
<!-- 打开软件时Logo弹窗自动关闭倒计时秒数 类似闪屏页SplashPage -->
<add key="LOGO_WINDOW_AUTO_CLOSE_TIMER" value="3" />
</appSettings>
重要参考:
【C#/WPF】窗体定时自动关闭的更多相关文章
- 一张图搞定OAuth2.0 在Office应用中打开WPF窗体并且让子窗体显示在Office应用上 彻底关闭Excle进程的几个方法 (七)Net Core项目使用Controller之二
一张图搞定OAuth2.0 目录 1.引言 2.OAuth2.0是什么 3.OAuth2.0怎么写 回到顶部 1.引言 本篇文章是介绍OAuth2.0中最经典最常用的一种授权模式:授权码模式 非常 ...
- WinForm 与WPF 窗体之间的想到调用
先放置一个容器控件,并设计 好WinForm(或WPF)窗口 winform 调用 wpf ElementHost el = new ElementHost(); el.Dock = DockStyl ...
- 关于WinForm引用WPF窗体---在Winform窗体中使用WPF控件
项目中有个界面展示用WPF实现起来比较简单,并且能提供更酷炫的效果,但是在WinForm中使用WPF窗体出现了问题,在网上找了一下有些人说Winform不能引用WPF的窗体,我就很纳闷,Win32都能 ...
- 关于WinForm引用WPF窗体
项目中有个界面展示用WPF实现起来比较简单,并且能提供更酷炫的效果,但是在WinForm中使用WPF窗体出现了问题,在网上找了一下有些人说Winform不能引用WPF的窗体,我就很纳闷,Win32都能 ...
- WPF窗体视图中绑定Resources文件中字符串时,抛出:System.Windows.Markup.StaticExtension
问题描述: 在Resources.resx定义了一个静态字符串字段Title,并在WPF窗体视图中绑定为窗体的标题: Title="{x:Static local:Resources.Tit ...
- WPF窗体禁用最大化按钮
禁用WPF窗体的最大化按钮可以使用Windows API改变按钮状态的方法实现.使用GetWindowLong可以得到当前按钮的状态.使用SetWindowLong可以设置按钮的状态.使用SetWin ...
- WPF自学入门(八)WPF窗体之间的交互
今天我们一起来看一下WPF窗体之间的交互-窗体之间的传值.有两个窗体,一个是父窗体,一个是子窗体.要将父窗体的文本框中的值传递给子窗体中的控件.我们该怎么实现? 接下来我们一起来实现窗体之间的传值,在 ...
- 在Office应用中打开WPF窗体并且让子窗体显示在Office应用上
在.NET主程序中,我们可以通过创建 ExcelApplication 对象来打开一个Excel应用程序,如果我们想在Excle里面再打开WPF窗口,问题就不那么简单了. 我们可以简单的实例化一个WP ...
- WPF窗体の投影效果
有时候我们需要给WPF窗体加上一个毛边(投影效果) 我们可以在窗体下加上如下代码 <Window.Effect> <DropShadowEffect BlurRadius=" ...
随机推荐
- HDUOJ-------2844Coins
Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- iOS 9 适配中出现的坑
整理 iOS 9 适配中出现的坑(图文) 2015-10-22 iOS开发 库克表示:“现在在中国有150多万的开发者在iOS当中开发应用程序,我们鼓励更多的人开发应用程序,也鼓励更多的创业加入.” ...
- Linux安装JDK详细步骤(rpm方式)
1. 先从网上下载jdk(jdk-6u32-linux-i586-rpm) ,下载后放在/home目录中,当然其它地方也行. 进入安装目录 #cd /home#cp jdk-6u32-linux-i5 ...
- iOS - App 上架审核被原因拒总结
1.未遵守苹果 iOS APP 数据储存指导方针 如果你的 App 有离线数据下载功能,尤其需要关注这一点.因为离线数据一般占用存储空间比较大,可以被重新下载和重建,但是用户往往希望系统存储空间紧时也 ...
- Leet Code -- Unique BST
对于数字n(大于1).从1到n有多少种binary search tree(BST序列)?当n=3时,BST序列为: 1 3 3 2 1 \ ...
- Win7没有telnet怎么办
http://jingyan.baidu.com/article/8065f87fc3b31123312498e5.html
- JDK1.5新特性,基础类库篇,调用外部命令类(ProcessBuilder)用法
一. 背景 ProcessBuilder类是用来创建操作系统进程的.与Runtime.exec相比,它提供了更加方便的方法以创建子进程. 每个ProcessBuilder实例管理着一个进程属性的集合. ...
- Java:HttpClient篇,Cookie概述,及其在HttpClient4.2中的应用
1. Cookie 概述 Cookie是什么? Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递.Cookie 包含每次用户访问站点时 Web 应用程序都可以读取 ...
- Win7中安装Windows PowerShell 3.0
win7内置的powershell是2.0,现在已经明显落伍了,但win系统软件更新,需要解决依赖问题,so,按下面步骤安装即可. 1. 安装Microsoft .NET Framework 4.0的 ...
- Re-ID with Triplet Loss
一篇讲Person Re-ID的论文,与人脸识别(认证)有非常多相通的地方. 文章链接: <In Defense of the Triplet Loss for Person Re-Identi ...