【C#】KeyDown事件不被触发的问题。

在c#的winform工程中,可能会遇到创建了一个对话框,该对话框内包含了控件作为这个对话框的一部分。软件运行时,键盘输入按键,却没有办法触发对话框的KeyDown事件。是不是很奇怪呢?

首先要明白:主对话框被激活的场合,该对话框相应的事件才能被触发。其次,主对话框的属性:KeyPreview需要设置为true。如:

那么怎么解决呢?

1.主对话框的属性KeyPreview设置为True。

2.当对话框的控件操作结束后,将父窗口也就是主对话框设置为焦点。如:this.Parent.Focus()。如果有多层嵌套的场合,可以设置为:this.Parent.Parent.Focus();依此类推。

相关推荐
技术净胜21 小时前
MATLAB 环境搭建与认知实战教程:从下载安装到入门全解析教程
开发语言·matlab
爱吃大芒果21 小时前
Flutter 自定义 Widget 开发:从基础绘制到复杂交互
开发语言·javascript·flutter·华为·ecmascript·交互
帅得不敢出门1 天前
MTK Android11 APP调用OTA升级
android·java·开发语言·framework
天天进步20151 天前
依赖注入的艺术:Composer 与模块化设计—— QuantConnect/Lean 源码分析系列一
c#
Swift社区1 天前
用 Task Local Values 构建 Swift 里的依赖容器:一种更轻量的依赖注入思路
开发语言·ios·swift
黑牛先生1 天前
【GDB】调试Jsoncpp源码
开发语言·c++·算法
ibuki_fuko1 天前
QT/C++ 程序启动时检查程序是否已经启动
开发语言·c++·qt
Q_Q5110082851 天前
基于Java的加油站销售积分管理系统的设计与实
java·开发语言
塔克Tark1 天前
【Python】xxx.py文件打包为.exe可执行文件
开发语言·python
尼罗河女娲1 天前
【测试开发】为什么 UI 自动化总是看起来不稳定?为什么需要引入SessionDirty flag?
开发语言·前端·javascript