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

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

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

那么怎么解决呢?

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

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

相关推荐
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题】【Java基础篇】第26题:Java的抽象类和接口有哪些区别
java·开发语言·面试
工程师0072 小时前
栈和堆的概念
c#·栈和堆
bzmK1DTbd2 小时前
SOLID原则在Java中的实践:单一职责与开闭原则
java·开发语言·开闭原则
AI进化营-智能译站2 小时前
ROS2 C++开发系列07-高效构建机器人决策逻辑,运算符与控制流实战
开发语言·c++·ai·机器人
winner88812 小时前
C++ 命名空间、虚函数、抽象类、protected 权限全套通俗易懂精讲(附与 Java 对比)
java·开发语言·c++
不会编程的懒洋洋2 小时前
C# P/Invoke 基础
开发语言·c++·笔记·安全·机器学习·c#·p/invoke
直奔標竿2 小时前
Java开发者AI转型第二十五课!Spring AI 个人知识库实战(四)——RAG来源追溯落地,拒绝AI幻觉
java·开发语言·人工智能·spring boot·后端·spring
时空系2 小时前
认识Rust——我的第一个程序 Rust中文编程
开发语言·后端·rust
yqcoder2 小时前
JavaScript 柯里化:把“大餐”拆成“小炒”的艺术
开发语言·javascript·ecmascript
每天吃饭的羊3 小时前
JSZip的使用
开发语言·javascript