如何跟踪 WinForms 中任何子控件何时获得或失去焦点?

2024-02-03

我有一个 Windows 窗体自定义控件,其作用类似于面板,因为它可以包含任意数量的子项。子控件的数量和类型是在运行时确定的,因此我需要以通用方式工作,而不知道可能存在或不存在的确切子控件。

我想根据面板是否包含焦点来更改面板的背景颜色。因此,如果面板的子级(或面板子级的子级等...)获得焦点,我想知道这一点,以便我可以更新自定义面板的背景颜色。当焦点转移到子层次结构中不存在的内容时,我还需要知道,以便我可以恢复到原始背景颜色。

Control.ContainsFocus 非常适合告诉我面板是否包含子层次结构中的焦点,但我需要知道何时发生更改。目前我只能想出以下糟糕的机制。

我挂钩每个孩子的 GotFocus/LostFocus 以及每个孩子的每个孩子等。我还必须挂钩 ControlAdded/ControlRemoved 以确保我与可能变化的孩子层次结构保持同步。正如您所看到的,这可能最终会产生大量事件挂钩,我怀疑必须有一种更简单的方法。有任何想法吗?


似乎使用Enter and Leave事件就是答案。 GotFocus 只会发送到获得焦点的特定控件,而 Enter 事件也会发送到获取 GotFocus 事件的控件的父(和祖先)控件。

from http://msdn.microsoft.com/en-us/library/system.windows.forms.control.leave.aspx http://msdn.microsoft.com/en-us/library/system.windows.forms.control.leave.aspx

“进入和离开事件是分层的,并且会级联并 沿着父链向下移动,直到达到适当的控制。为了 例如,假设您有一个带有两个 GroupBox 控件的 Form,并且每个控件 GroupBox 控件有一个 TextBox 控件。当插入符号从 将一个文本框转移到另一个文本框,为文本框引发离开事件 和 GroupBox,并且为其他 GroupBox 引发 Enter 事件 文本框。”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何跟踪 WinForms 中任何子控件何时获得或失去焦点? 的相关文章

  • C# 如何在列表框中用图标显示进程

    我正在创建一个应用程序 当按下按钮时 它将列出当前正在运行的进程 其图标就在它们旁边 private void materialFlatButton6 Click 1 object sender EventArgs e Process pr
  • 将 SQL 数据库附加到 ComboBox.ItemSsource (WPF)

    我想知道如何将 SQL Server 数据库分配给 ComboBox 的 ItemSource 属性 在 WPF 应用程序中 我将数据源分配给项目 但不知道如何分配给属性 此致 你可以这样尝试 你可以像下面这样绑定组合框的项目源属性 Ite
  • GetChildAtPoint 方法返回错误的控件

    我的表单层次结构是这样的 Form gt TableLayoutOne gt TableLayoutTwo gt Panel gt ListBox 在列表框的 MouseMove 事件中 我有这样的代码 Point cursosPositi
  • 如何引用 dotNet Core 项目?

    我想将 dotNet Core 项目引用到 WPF 项目 我的 WPF 项目使用 v4 6 2 dotNet Framework 我的 dotNet Core 项目使用 v1 6 dotNet Standard 当我尝试引用它时 出现此错误
  • 当“多次安装 MSBuild”时,Dotnet 项目转换尝试转换失败

    try convert w Test csproj target framework netstandard2 0 结果是 Multiple installs of MSBuild detected please select one In
  • 正则表达式基于组的不同替换?

    所以我对正则表达式比较陌生 并且做了一些练习 我正在玩一个简单的 混淆器 它只是寻找 dot or dot or at or at 不区分大小写 并且在匹配项之前或之后有或没有任意数量的空格 这是针对通常情况的 someemail AT d
  • 可选参数代码在 .NET 3.5 中编译。为什么?

    这段代码在 VS 2010 的框架 3 5 项目中编译正常 我三次检查过 public LoggingClient string uri net msmq localhost logging 为什么 我在 C 4 规范中没有看到任何内容 文
  • .Net Core 和 Microsoft.Web.Administration

    我正在尝试编写一个可以将绑定添加到远程服务器上的 IIS 的服务 我正在使用 Microsoft Web Administration 我添加绑定的代码如下所示 public static bool AddSiteBinding strin
  • C# winforms Toolstrip Dropdown with toolstripcontrolhost 第一次在 (0,0) 位置打开

    我有绑定导航器控件 其中包含 5 个项目 其中包括一个工具条向下按钮 我以编程方式添加一个包含面板的toolstripcontrolhost 到toolstripdownbutton 当我第一次打开下拉菜单时 它显示在位置 0 0 在第二次
  • 创建序列的幂集

    我正在尝试创建一个程序 作为创建序列 字符串或数字的可能组合的基础 这是某种加密 解密程序 我正在使用 Visual Studio 2013 和 C 我想做的是从序列中生成幂集 但我有点困惑并且无法继续进行 这是代码 public stat
  • C# usercontrol如何访问所有子控件

    我定义了一个自定义面板 里面有一个表格布局面板 但是 当我在 winform 上使用此控件时 我无法访问表布局面板属性 例如 我想在单元格中添加一列或停靠其他控件 我尝试将修饰符属性更改为public 但仍然不起作用 我该怎么做才能查看和更
  • 强制发送带有请求的根 CA

    我们有第三方 API 提供商提供 SOAP API 他们提供了3个证书 客户证书 中级证书 根证书 所有证书均在本地安装 他们提供了带有密码的 pfx 证书 我们已经在 SOAP UI 工具中上传了这个 pfx 并运行了一个请求 它起作用了
  • 如何使 PLINQ 在 .NET 4.0 beta 2 中产生更多并发线程?

    在以前版本的并行扩展中 您可以设置线程数 enumerable AsParallel numberOfThreads 但现在这种超载不再可用 现在该怎么做呢 在新版本中 您可以使用扩展方法 WithDegreeOfParallelism i
  • Spring.Net可以起到PostSharp的作用吗?

    几个月前 我发现了 PostSharp 有一段时间 它非常棒 但随后法律部门回复说他们不喜欢旧版本的许可证 然后部门告诉我2 0的价格高得令人无法接受 对于我们需要的座位数量 我非常失望 但并不沮丧 我想 这不可能是唯一的这样的框架 我一直
  • 更改控件的字体时是否应该丢弃旧字体?

    C Windows 窗体应用程序 我们正在重新设计我们的应用程序 我还更改了旧应用程序中使用的糟糕的默认字体 所以我想在加载表单时调用以下函数来更改表单上所有控件的字体 internal static void SetFonts Contr
  • 如何让“dnu”命令在 OS X 上运行?

    刚刚下载并安装视觉工作室代码 https code visualstudio com 在 OS X 10 10 3 上 我已经设法部分遵循ASP NET 5 安装说明 https code visualstudio com docs ASP
  • 使用 POST 的 HttpWebRequest 的性能

    我有一个用于测试网络服务的小工具 它可以使用 POST 或 GET 调用 Web 服务 使用POST的代码是 public void PerformRequest WebRequest webRequest WebRequest Creat
  • 在 C# 中解析 JS Date.toIsoString

    我需要将 JS 日期存储为 ISO 8601 日期 我目前正在从格式为 2019 06 22T00 00 00 000Z 的表单中获取日期 正如 JS 的 toIsoString 方法所期望的那样 当这个日期传递到我的 API 控制器时 我
  • 查找数组中的多个索引

    假设我有一个像这样的数组 string fruits watermelon apple apple kiwi pear banana 是否有一个内置函数可以让我查询 apple 的所有索引 例如 fruits FindAllIndex ap
  • 批准后使用 jenkinsfile 构建促销

    仅当更改管理使用 servicenow 更改票证或通过手动批准批准它时 我才需要使用 jenkins 文件将我的构建升级到生产 我想要类似的东西 产品构建只有在经理批准后才能手动触发 他 她应该收到带有批准 拒绝链接的批准邮件 或者 如果与

随机推荐

  • 正则表达式匹配句子中的第一个单词

    我正在寻找一个正则表达式 它匹配句子中的第一个单词 不包括标点符号和空格 例如 这是一个句子 中的 这个 和 首先 我想说 你好 中的 第一 这不起作用 A Z A Za z r s w 将匹配每个句子中的第一个单词 http rubula
  • 来自错误线程 Android 的领域访问

    我正在 Android 上处理这个问题 来自错误线程的领域访问 Realm 对象只能在创建它们的线程上访问 我想在我的 RemoteViewsFactory 中使用 Realm public class RemoteViewsX imple
  • AttributeError:“NoneType”对象没有属性“_inbound_nodes”Keras

    from Config import Config from FaceDetection MTCNNDetect import MTCNNDetect import cv2 import tensorflow as tf import ke
  • Zend 路线 全部捕获

    请帮忙 我是 Send 新手 想要修改我正在开发的 cms 项目的默认路由 如果控制器不存在 如何在 zend 中创建 捕获所有 路由 我正在尝试创建如下链接 mydomain com slug mydomain com slug1 其中
  • 如何使用 Jackson 序列化基于 java.util.Map 的类

    我有一堂课 看起来像这样 JsonFormat shape JsonFormat Shape OBJECT public class MyMap implements Map
  • 运算符重载 C++:只写版本

    我正在重载数据结构的运算符 因此我有标准函数声明 T operator int i used for regular objects const T operator int i const used for const objects 所
  • 如何禁用 iPhone 上文本输入的拼写检查器

    有时拼写检查器是不必要的 验证码 用户名 电子邮件等 有没有办法在某些文本输入 文本区域禁用它 正如我的好友 Jonathan Stark 所指出的 您应该能够使用自动更正和自动完成等属性来实现您正在寻找的效果
  • 自动对齐双语 Rmarkdown -> LaTeX 文档的文本

    更新 见下文 我正在写一份双语报告 即使用阿拉伯语和英语 使用xelatex引擎 mainfont Arial and lang arYAML 元数据 该文档可以顺利渲染阿拉伯语和英语 经过一段时间后 hustle https stacko
  • Android获取以编程方式创建的视图的宽度

    我以编程方式创建了 TextView 如下所示 TextView mTextView new TextView getApplicationContext final LayoutParams params new TableLayout
  • WPF ListView ScrollBar 可见为 false

    即使需要 是否可以强制水平 或垂直 滚动不显示 问题是我需要根据项目显示不同的颜色 效果很好 但您可以清楚地看到颜色没有到达列表视图的两个边缘 这有点难看 更糟糕的是 我的列表视图中有另一个列表视图 其中包含另一个项目列表 这些项目的背景甚
  • Firefox 中背景图像的过渡?

    我正在尝试为此寻找替代方案 transition background image 1s whatever in firefox因为它只适用于 webkit 浏览器 我已经尝试过不透明度替代方案 但这对我来说不是一个选择 因为我在背景容器上
  • git - 无法拉取或提交

    我在提交和拉取时遇到问题 在提交 IDE 中我看到 warning not all local changes may be shown due to an error unable to read tree 并且只有我的文件提交的一部分在
  • 我可以在我不拥有的类型上使用 DebuggerTypeProxyAttribute 之类的东西吗?

    我有一个IClaimsPrincipal变量 我想看看其中有多少索赔 在监视窗口中导航属性很复杂 因此我想自定义该对象的显示方式 我知道 DebuggerTypeProxy 属性 http msdn microsoft com en us
  • jQuery 美元符号混淆

    我对 jQuery 中的美元符号有点困惑 希望有人能帮助我 我有以下函数声明 function create discussion button click function alert Clicked listitems tr click
  • PHP 的 Curl 无法在 AppEngine 上运行

    在本地 AppEngine 上 curl 请求给出以下结果 这正是我所期望的 url gt https spreadsheets google com feeds spreadsheets private full content type
  • 定时器触发不会触发队列但手动录入会触发-Python

    我有一个队列触发器 当消息手动添加到队列中时 它会启动并按预期运行 但是 当消息通过以下定时器触发函数写入队列时 它无法启动 我可以看到触发器已成功写入消息 init py import datetime import logging im
  • 在 HTTPServlet 请求中编码 UTF-8

    这可能看起来像是一个已经解决的问题 但事实并非如此 因为我已经解决了所有涉及 UTF 8 的问题 但没有一个解决方案对我有帮助 我使用 JSON 简单库向包含 JSON 对象的 java servlet 发送 http 请求 我在Tomca
  • 如何同时针对多种类型专门化方法

    我有这样的代码 template lt class T gt struct Value quite a lot of other functions which I do not want to specialize too void pr
  • LINQ 使用 OR 连接

    我想使用 OR 语句与 LINQ 进行 JOIN 这是我开始的 SQL 查询 SELECT t id FROM Teams t INNER JOIN Games g ON g homeTeamId t id OR g awayTeamId
  • 如何跟踪 WinForms 中任何子控件何时获得或失去焦点?

    我有一个 Windows 窗体自定义控件 其作用类似于面板 因为它可以包含任意数量的子项 子控件的数量和类型是在运行时确定的 因此我需要以通用方式工作 而不知道可能存在或不存在的确切子控件 我想根据面板是否包含焦点来更改面板的背景颜色 因此