WPF 捕获键盘输入事件

本文探讨了在WPF应用程序中捕获键盘输入的有效方法。最初尝试使用PreviewKeyDown和PreviewKeyUp事件,但发现这些方法存在局限性和不便之处。最终通过使用PreviewTextInput事件成功解决了问题,该方法能更直接地获取文本输入。

最近修改的一个需求要求捕获键盘输入的 Text,包括各种标点符号。

最开始想到的是 PreviewKeyDown 或者 PreviewKeyUp 这样的键盘事件。

但是这两个事件的对象 KeyEventArgs 不够用,得依靠判断 Key 来判断输入了什么,然后再根据判断写死一个相应键位的 Text 来获取数据。

如组合键获取 乘号键 需要用到 Shift + 8(数字键盘那的乘号键是 Key.Multiply ,而需要在主键盘位获取则需要用到组合键)

1 private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
2 {
3    if(e.KeyStates == Keyboard.GetKeyStates(Key.D8) && Keyboard.Modifiers == ModifierKeys.Shift)
4    {
5        var input = "*";
6    }
7 }

这种办法既不友好且需要用到其他标点符号时还得另外加 if 条件,而且会发生 Key 冲突的问题,如上你输入完 乘号键 以后可能还会多加一个“8”,由于 Key.D8 的原因

 

随后花了点时间找了下国外博客,然后发现了这个文章(引用1),其实文章内的解决方案博客园也能找到几篇,但是不详细一笔带过。

这是我根据文章内写的代码

XAML:

1 <Window x:Class="Dome.MainWindow"
2     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4     PreviewTextInput="Window_PreviewTextInput"
5     Height="400" 
6     Width="600"
7     MinWidth="600">
8 </Window>

C#:

1 private void Window_PreviewTextInput(object sender, TextCompositionEventArgs e)
2 {
3    var input = e.Text;
4 }

 

引用

http://stackoverflow.com/questions/2924928/wpf-previewkeydown-event-and-underscore-char

 

总结

关于PreviewKeyDown和KeyDown的区别园区里也有很多相关的文章,以后我也将会写一个,毕竟我也碰到过这个坑...

转载于:https://www.cnblogs.com/SunsetAzure/p/6227864.html

系统基于PyTorch框架,支持UNet和DeepLabV3两种主流分割网络,实现了端到端的训练流程和性能评估。train.py是系统的核心执行文件,负责整个训练流程的协调。它首先通过参数解析器接收用户配置,包括模型类型、训练参数(批次大小、学习率、epoch数等)、数据路径等。系统会自动创建输出目录,初始化模型,并采用Adam优化器配合余弦退火学习率衰减策略。训练过程中,系统使用自定义的MyDataset类加载数据,支持数据增强和CT图像的特殊预处理。每个epoch会计算并记录训练集和验证集的损失值、mIoU、Dice系数等指标,通过ConfusionMatrix类综合评估模型性能,自动保存最佳模型权重。训练结束后会生成学习率衰减曲线、损失-指标曲线等多种可视化结果。utils.py提供了丰富的工具函数,包括:1)模型构建函数get_model,根据参数实例化对应网络;2)混淆矩阵类ConfusionMatrix,用于计算精度、召回率、F1、IoU等关键指标;3)数据加载类MyDataset,实现图像预处理、数据增强和标签映射;4)多种可视化函数,如plot_lr_decay绘制学习率变化,plt_loss_iou_dice展示训练曲线;5)训练和评估的核心函数train_one_epoch/evaluate,包含前向传播、损失计算和指标统计逻辑。compare.py专注于训练结果的可视化分析,通过加载训练生成的JSON日志文件,提供跨模型的性能对比功能。其extract_metrics函数能解析不同模型的训练指标,plot_comparison函数则生成包含训练集和验证集对比的子图,支持F1、IoU、Loss等指标的并行展示,便于研究者直观比较不同模型的优劣。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值