记录-开发WPF项目中的一个疑惑
背景
项目技术栈:C#,WPF
当前我想要实现点击某个按钮就可以跳转到某个界面,翻阅了项目中的代码,看到了
// 按钮事件
private void Btn_Click(object sender, RoutedEventArgs e)
{
LogBll.Instance.WriteSysLog("xxxxxxxxx");
NavigationService.Navigate(new Uri("xxxxx.xaml", UriKind.Relative));
this.TxtSearchBox.Focus(); //一个文本框
}
在我的猜测中,我以为是直接在Navigate调用之后就直接进入了对应的页面,然后等页面关闭或者是结束才回到当前这个函数
而实际上,是直接把整个函数执行完,然后再跳转到对应的界面
疑惑
// 1、这行代码还有什么用?
// 2、明明都跳到了B界面了,A界面的组件我还Focus干嘛?
this.TxtSearchBox.Focus(); //一个文本框
怀疑Focus操作是为了实现清除文本框文本,防止你输入了文本,然后跳转页面,页面结束后,文本还在
(证实为错误,不能实现清除操作)
解答
后来问了下导师,导师说是为了这行代码报异常,无法跳转到新页面,那么驻留在旧页面的时候。旧页面中要求TxtSearchBox组件是要一直保证焦点的,故才在下方插入Focus()操作
NavigationService.Navigate(new Uri("xxxxx.xaml", UriKind.Relative));
但实际上,我修改了xxxx.xaml改成一个不存在的界面,程序的确可以执行到Focus()操作,这是因为Navigate本来就是执行完整个函数才进行跳转的。Focust()执行了,我的焦点可以聚集吗?不可以,程序直接就报异常退出掉了
最后
实际上Navigate根本不会在生产环境中报异常,因为Navigate函数出现异常的情况为:
1. 没有为导航目标指定 URI。如果导航目标的URI为null或空,则会抛出ArgumentNullException异常。
2. 导航目标的URI格式不正确。如果导航目标的URI格式不正确,则会抛出UriFormatException异常。
3. 导航目标的XAML文件无法加载。如果导航目标是一个XAML文件,但该文件无法加载,则会抛出XamlParseException异常。
4. 导航目标不是一个有效的Page对象。如果导航目标不是一个有效的Page对象,则会抛出InvalidOperationException异常。
5. 导航目标的构造函数参数不正确。如果导航目标的构造函数需要传递参数,但参数不正确,则会抛出TargetInvocationException异常。
6. 导航目标的代码含有语法错误。如果导航目标的代码含有语法错误,则会抛出XamlParseException异常。
而这些情况,只要测试中不出现,那么生产中就不会出现,这些异常不会随着操作而出现,而是会因代码写错而出现
故Focus()操作是多余的,真异常了,也没用;不异常,也没用,除非你在跳转界面的过程中想要在那个文本框中输入文本,但是,一般不会出现这种情况。最后,新的代码就不加这个操作了,旧的,暂时不管
记录-开发WPF项目中的一个疑惑的更多相关文章
- oracle性能优化(项目中的一个sql优化的简单记录)
在项目中,写的sql主要以查询为主,但是数据量一大,就会突出sql性能优化的重要性.其实在数据量2000W以内,可以考虑索引,但超过2000W了,就要考虑分库分表这些了.本文主要记录在实际项目中,一个 ...
- WPF项目中所遇到的一些问题集
1. 没有Timer控件 解决方案: 第一步:申明一个DispatcherTimer 类的变量, private DispatcherTimer timer; //定时控件 第二步:初始化这个类 ti ...
- 如何在 GitHub 的项目中创建一个分支呢?
如何在 GitHub 的项目中创建一个分支呢? 其实很简单啦,直接点击 Branch,然后在弹出的文本框中添加自己的 Branch Name 然后点击蓝色的Create branch就可以了,这样一来 ...
- 【Filter 不登陆无法访问】web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面的功能
在web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面,而重定向到登陆界面的功能. 项目是用springMVC+spring+hibernate实现 (和这个没有多大关系) 第一步: 首先 ...
- Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作
Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序2>. 添加一个 ADO.NET实体数据模型,选择对应的数据库与表(Studen ...
- WPF项目中解决ConfigurationManager不能用(转)
https://blog.csdn.net/MOESECSDN/article/details/78107888 在WPF项目中遇到这样的问题,做一下笔记.希望对自己和读者都有帮助. 在aap.con ...
- 项目中的一个分页功能pagination
项目中的一个分页功能pagination <script> //总页数 ; ; //分页总数量 $(function () { // $("#pagination"). ...
- Windows Presentation Foundation (WPF) 项目中不支持xxx的解决
一般Windows Presentation Foundation (WPF) 项目中不支持xxx都是由于没引用相应的程序集导致,比如Windows Presentation Foundation ( ...
- Java项目中每一个类都可以有一个main方法
Java项目中每一个类都可以有一个main方法,但只有一个main方法会被执行,其他main方法可以对类进行单元测试. public class StaticTest { public static ...
- 如何在 C# 项目中链接一个文件夹下的所有文件
在 C# 项目中通过链接方式引入文件可以让我们在项目中使用这些文件中的代码.常见的比如链接 AssemblyInfo.cs 文件,这样我们就可以在项目中使用这个文件中的版本号等信息.但是如果我们想要链 ...
随机推荐
- vulhub的搭建
官网简介:Vulhub是一个基于docker和docker-compose的漏洞环境集合,进入对应目录并执行一条语句即可启动一个全新的漏洞环境,让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本 ...
- Android笔记--Application
Application生命周期 在APP运行过程中有且仅有一个Application对象贯穿整个生命周期 Application全局变量 实例化: 声明全局变量:
- VsCode里面在JavaWeb项目里面配置Maven环境详解
1.在之前已经新建完成一个JavaWeb项目的基础上开始 2.设置里面搜索Maven,找到这个,然后进行定位 3.将Tomcat Server配置进去(右上角有一个加号) (对于已经学过Java的并不 ...
- Agora Flat:在线教室的开源初体验
开发者其实很多时候都非常向往开源,开源领域的大佬也特别多,我们谈不上有多资深,也是一边探索一边做.同时,也希望可以借这次机会把我们摸索到的一些经验分享给大家. 01 Flat 是什么 Flat 是一个 ...
- 自己动手从零写桌面操作系统GrapeOS系列教程——20.汇编语言读硬盘实战
学习操作系统原理最好的方法是自己写一个简单的操作系统. 本讲我们设计一个简单的读硬盘实验.通过一定的方法使硬盘第二个扇区的前3个字节依次为1.2.3,最后3个字节依次为3.2.1,中间的506个字节全 ...
- 万字长文带你入门docker
1 Docker dockerfiler 镜像构建 Compose是在单机进行容器编排 Horbor 镜像仓库 Docker swarm 在多机进行容器编排 Docker Compose缺点是不能在分 ...
- active
rabbitMQ与activeMQ区别 之前的项目中都用到了这两个消息队列 ActiveMq,传统的消息队列,使用Java语言编写.基于JMS(Java Message Service),采用多线程并 ...
- 企业什么喜欢做电视看板,电视看板浏览网页的必备工具 电视看板浏览器 电视看板自动打开网页 电视看板必备APP
企业喜欢做电视看板主要是因为它可以提供以下几个方面的优势: 增强企业形象:电视看板可以将企业的信息和广告以更加生动.直观的方式呈现出来,提高企业形象和知名度. 提高工作效率:电视看板可以在企业内部作为 ...
- 【牛客小白月赛70】A-F题解【小d和超级泡泡堂】【小d和孤独的区间】【小d的博弈】【小d和送外卖】
比赛传送门:https://ac.nowcoder.com/acm/contest/53366 难度适中. 作者:Eriktse 简介:19岁,211计算机在读,现役ACM银牌选手力争以通俗易懂的方式 ...
- sorted、返回函数、匿名函数、装饰器、偏函数
1.sorted()排序方法,它可已经一个列表按照升序排序,也可以按照反序排序 1)如果要进行反序排序时,需要在函数里面设置reverse = True 2)sorted是一个高阶函数,它接受函数作为 ...