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

WPF启动窗体的三种方式

启动窗体的三种方式:
1. StartupUri=“MainWindow.xaml”,比Application_Startup执行的晚。推荐方案

在App.xaml文件中

<Applicationx:Class="Wpf启动窗体三种方式.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:Wpf启动窗体三种方式"StartupUri="MainWindow.xaml"><Application.Resources><!-- 应用程序资源 --></Application.Resources>
</Application>

2. Application_Startup事件,可以在启动某个窗体时,携带参数。推荐方案

在App.xaml文件中

<Applicationx:Class="Wpf启动窗体三种方式.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:Wpf启动窗体三种方式"Startup="Application_Startup"><Application.Resources><!-- 应用程序资源 --></Application.Resources>
</Application>

在App.xaml.cs

public partial class App : Application
{private void Application_Startup(object sender, StartupEventArgs e){MainWindow mainWindow = new MainWindow();//mainWindow.Show();mainWindow.ShowDialog();}
}

3. 自定义Main方法,不建议。会造成Startup事件和StartupUri属性无效,控件权完全交给开发者。没必要的。

// App中定义一个Main方法,WPF默认也提供一个Main方法(在App.g.i.cs这个文件中)。但Main入口方法有且只有一个。所以报错。解决:去掉一个Main。

// 通过测试发现XXX.g.i.cs(在obj->Debug中可以看见该文件)这样文件不能改动,重新编译后,WPF会重新生成。改动的地方还原了。造成修改无效。

// 需要:
// 1。把App.xaml生成操作选择“无”,即编译App.xaml时不让它产生Main方法。开发者才能自定义Main方法。// 2。添加特性 [STAThread],原因:WPF中的控件运行需要一个线程安全的环境。在这里插入图片描述

[STAThread]
public static void Main(string[] args)
{// 实例化一个窗体MainWindow main = new MainWindow();LoginWindow login = new LoginWindow();if(login.ShowDialog() == true){// 实例化一个应用程序Application app = new Application();// 应用程序运行时启动第一个窗体app.Run(main);}
}
http://www.xdnf.cn/news/19633.html

相关文章:

  • 【Day 42】Shell-expect和sed
  • 【python】lambda函数
  • Ubuntu 24.04 服务器配置MySQL 8.0.42 三节点集群(一主两从架构)安装部署配置教程
  • ubuntu部署MySQL服务
  • 数据结构——树(04二叉树,二叉搜索树专项,代码练习)
  • 【硬核干货】把 DolphinScheduler 搬进 K8s:奇虎 360 商业化 900 天踩坑全记录
  • 从零开始:用代码解析区块链的核心工作原理
  • linux开发板(rk3568,树莓派)自动连接保存好的WIFI
  • 模板商城探秘:DINO-X 定制模板指南(2)
  • Stop-Process : 由于以下错误而无法停止进程“redis-server (26392)”: 拒绝访问。
  • HTTPS如何保证数据传输过程中的安全性?
  • HQX SELinux 权限问题分析与解决
  • 2025 年,这些求职技能利用空闲时间就能学,轻松提升职场竞争力​
  • 亚马逊的领导力原则
  • Photoshop - Ps 处理图层
  • Qt模型/视图编程详解:QStringListModel与多视图数据同步
  • linux 命令 awk的常见用法
  • Zynq中级开发七项必修课-第四课:S_AXI_HP0 高速端口访问 DDR
  • OCR 识别准确率的关键影响因素
  • NAT与内网穿透
  • 【python】python进阶——pip命令
  • 【完整源码+数据集+部署教程】粘土石实例分割系统源码和数据集:改进yolo11-LVMB
  • Qt Demo(3) 之 deepseek 帮我写的关于图像显示的小界面
  • 【Vue2 ✨】Vue2 入门之旅(十):Vuex 入门
  • 精读:《VideoMAE V2: Scaling Video Masked Autoencoders with Dual Masking》
  • 一键换装玩疯了!3个AI魔法提示词让你秒变时尚达人
  • lua脚本在redis中执行是否是原子性?
  • Java反序列化漏洞揭秘:从原理到攻击实战
  • RT-DETR模型训练中断,接着训练的方法
  • 单片机day1