如何循环遍历 Windows 窗体窗体中的所有控件或如何查找特定控件是否是容器控件?

2024-05-01

我会告诉我的要求。我需要有一个keydown中每个控件的事件Windows 窗体 http://en.wikipedia.org/wiki/Windows_Forms形式。如果我必须对所有 keydown 事件执行的操作相同,那么最好这样做,而不是为所有控件手动执行此操作。

所以我基本上可以这样做:

foreach (Control c in this.Controls)
    c.KeyDown+= new KeyEventHandler(c_KeyDown);

但在这里,foreach 不会在位于 groupBox 或 tabControl 内的控件内循环。我的意思是,如果表单(此)包含 groupBox 或其他一些容器控件,那么我可以获得该特定容器控件的 keydown 事件。还有foreach不循环访问驻留在该容器控件内的控件。

问题 1:如何获取表单中“所有”控件的 keydown 事件?

如果上面的谜题解决了,那么我的问题就结束了。

这是我可以做的其他事情:

主要是伪代码

foreach (Control c in this.Controls)
{
     c.KeyDown += new KeyEventHandler(c_KeyDown);

     if (c is Container control)
           FunctionWhichGeneratesKeyDownForAllItsChildControls(c)
}

我知道我必须经历FunctionWhichGeneratesKeyDownForAllItsChildControls(c)如果组框内有组框等,则多次获得所有控件的 keydown 。我能做到。我的问题是,

问题2:如何检查是否c是容器控件吗?


一个简单的递归函数应该可以做到这一点。

private void AddEvent(Control parentCtrl)
{
  foreach (Control c in parentCtrl.Controls)
  {
    c.KeyDown += new KeyEventHandler(c_KeyDown);
    AddEvent(c);
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何循环遍历 Windows 窗体窗体中的所有控件或如何查找特定控件是否是容器控件? 的相关文章

  • 处理 LINQ sum 表达式中的 null

    我正在使用 LINQ 查询来查找列的总和 并且在少数情况下该值有可能为空 我现在使用的查询是 int score dbContext domainmaps Where p gt p SchoolId schoolid Sum v gt v
  • 实体框架代码优先 - 在另一个文件中配置

    使用 Fluent API 将表到实体的映射分开的最佳方法是什么 以便它全部位于单独的类中 而不是内联在 OnModelCreating 方法中 我目前在做什么 public class FooContext DbContext prote
  • .NET 可移植类库中的 .ToShortDateString 发生了什么

    我想知道为什么没有 ToShortDateString在 NET 可移植类库中 我有 2 个项目 Silverlight 和常规 NET 类库 使用相同的代码 并且代码涉及调用 ToShortDateString on a DateTime
  • 身份未映射异常

    System Security Principal IdentityNotMappedException 无法转换部分或全部身份引用 该错误仅在应用程序注册后出现一次 当 SecurityIdentifier 无法映射时 例如 返回 Ide
  • __FUNCTION__ 宏的 C# 版本

    有人对 C FUNCTION 宏的 C 版本有好的解决方案吗 编译器似乎不喜欢它 尝试使用这个代替 System Reflection MethodBase GetCurrentMethod Name C 没有 LINE or FUNCTI
  • 对数字进行向上和向下舍入 C++

    我试图让我的程序分别向上和向下舍入数字 例如 如果数字是3 6 我的程序应该四舍五入最接近的数字 4 如果该数字是3 4 它将向下舍入为 3 我尝试使用ceil库获取 3 个项目的平均值 results ceil marks1 marks2
  • 防止复制构造和返回值引用的分配

    如果我有一个函数返回对类实例的引用 但我无法控制其源 比如说list
  • 如何检测斑点并将其裁剪成 png 文件?

    我一直在开发一个网络应用程序 我陷入了一个有问题的问题 我会尝试解释我想要做什么 在这里您看到第一个大图像 其中有绿色形状 我想要做的是将这些形状裁剪成不同的 png 文件 并使它们的背景透明 就像大图像下面的示例裁剪图像一样 第一张图像将
  • 我的 C# .NET 团队是否应该迁移到 Windows Presentation Foundation? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么以下代码不允许我使用 fgets 获取用户输入但可以使用 scanf?

    这是一个更大程序的简短摘录 但该程序的其余部分无关紧要 因为我认为我能够隔离该问题 我怀疑这与我使用 fgets 的方式有关 我读过 最好使用 fgets 而不是 scanf 但我似乎无法让它在这里正常工作 当我使用以下代码时 程序不会给我
  • C#:如何使用 SHOpenFolderAndSelectItems [重复]

    这个问题在这里已经有答案了 有人可以举例说明如何使用 shell 函数吗SH打开文件夹并选择项目 http msdn microsoft com en us library bb762232 VS 85 aspx来自 C 我不太明白如何使用
  • 使用 AutoMapper 进行 LINQ GroupBy 聚合

    试图让查询工作 但老实说不确定如何 或者是否可能 进行它 因为我尝试过的一切都不起作用 共查询6个表 Person PersonVote PersonCategory Category City FirstAdminDivision Per
  • 如何使用 Clang 查找内存泄漏

    我在我的机器 ubuntu 中安装了 Clang 以便发现我的 C 代码中的内存泄漏 我编写了一个示例代码来检查它的工作情况 如下所示 File hello c for leak detection include
  • 通过 MSBuild 调用 cl.exe 时无限期挂起

    我正在尝试在我的 主要是 C 项目上运行 MSBuild 想象一下一个非常庞大的代码库 Visual Studio 2015 是有问题的工具集 Windows 7 SP1 和 VS 2015 更新 2 即使使用 m 1 从而迫使它仅使用一个
  • 改进C++逐行读取文件的能力?

    我正在解析大约 500GB 的日志文件 我的 C 版本需要 3 5 分钟 我的 Go 版本需要 1 2 分钟 我正在使用 C 的流来流式传输文件的每一行以进行解析 include
  • C# - 为什么我需要初始化 [Out] 参数

    我有几个从本机 dll 导入的方法 使用以下语法 internal static class DllClass DllImport Example dll EntryPoint ExampleFunction public static e
  • 删除对象时指针自动指向空

    假设我有一个对象和其他几个不同类类型的对象中的 10 个指向它的指针 如果对象被删除 这些指针必须设置为空 通常我会将对象的类与具有指向它的指针的类互连 以便它可以通知它们它正在被删除 并且它们可以将它们的指针设置为空 但这也有一个负担 即
  • 在 unix 中编译 dhrystone 时出错

    我是使用基准测试和 makefile 的新手 我已经从下面的链接下载了 Dhrystone 基准测试 我正在尝试编译它 但我遇到了奇怪的错误 我尝试解决它 但没有成功 有人可以帮助我运行 dhrystone 基准测试吗 以下是我尝试编译的两
  • 如何使复选框不可选择?

    我想知道你是怎么做的CheckBox在c 中无法选择 我认为这会是类似 SetSelectable false 之类的东西 但我似乎看不到该方法 I found CanSelect但这似乎是只读属性 您可以设置自动检查 http msdn
  • Windows 上 libcurl 的静态库[重复]

    这个问题在这里已经有答案了 如何将此库 libcurl 静态链接到 exe 我努力了 disable share enable static 没有帮助 我使用的是MingW32 有没有一种简单的方法来静态链接这个库 这样我的应用程序就不再有

随机推荐

  • 设置 Size 属性时 Winform 不会调整大小

    我有一个用于托管 WebBrowser 控件的 WinForm 我想根据浏览器加载的文档大小动态调整表单大小 我可以从 WebBrowser 控件中成功读取文档大小 并根据该大小设置表单大小 但表单根本不会调整大小 调整大小是在 WebBr
  • ComponentResourceKey 作为 DynamicResource 问题

    我在使用 ComponentResourceKey 时发现一些意外行为 出现问题是因为我使用了 SystemColors 类中使用的名称 考虑以下代码 首先 我将 a 中的 ComponentResourceKey 公开为静态属性 publ
  • 未找到类规范化器(在 PHP 5.3.8 中)

    我在尝试使用时收到此 PHP 错误Normalizer类 特别是Normalizer normalize功能 Fatal error Class Normalizer not found 我目前使用的是 PHP 5 3 8 因此 根据PHP
  • 如何使用云 Firestore 实现 HIPAA 合规性? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须开发一个健康应用程序 想知道是否可以使用 Cloud Firestore 作为它的后端 任何人都可以对如何使我的系统符合 HIPAA
  • 使用 javaw.exe 启动应用程序时,不会执行关闭挂钩

    如果我使用 javaw exe 启动 Java 应用程序 则当用户从其 Windows 帐户注销时 不会执行关闭挂钩 该应用程序实际上是使用 launch4j 生成的 exe 文件启动的 但我知道它使用 javaw exe 来启动它 这似乎
  • Python 套接字库认为套接字未打开时已打开

    我正在使用一些Python 如下所示 HOST 127 0 0 1 PORT 43434 single socket socket socket AF INET socket SOCK STREAM try single bind HOST
  • WPF 中的自动展开树视图

    有没有办法在 WPF 中自动展开树视图中的所有节点 我搜索了 甚至没有在 treeview 属性中找到展开功能 Thanks 您可以设置 ItemContainerStyle 并使用 IsExpanded 属性
  • Python - 列出文件夹中的文件 - 带变量的路径名

    我对此非常陌生 我正在使用 python 我想列出多个不同文件夹中的文件 使用 Windows 在我的第一次尝试中 我有很多路径变量 每条路径都有自己的变量 它确实有效 但这似乎是一种冗长的做法 由于除了文件夹名称之外 路径均相同 因此我尝
  • 使用包含双引号的字符串填充输入字段

    我从服务器返回一个值 其中包含双引号 我需要用值填充输入标签 我尝试过使用 escape myVariable 但这会将空格转换为 20 等 我想我可以写一个 if then 来表示如果字段中有双引号 则使用 value 但是如果字段中同时
  • 如何访问 Go 中的嵌套模块(子模块)?

    去版本 1 12 9 这是一个简单演示项目的结构 所以我们有一个模块domain 其中包含两个模块 activity and person 我想将域与主文件中的所有嵌套模块一起使用 gt 模块 go 我知道如何导入domain主要在go m
  • SciKit-Learn 的分解模块中未安装 LatentDirichletAllocation

    我在 SciKit Learn 包中遇到了一些奇怪的问题 SciKit Learn 包内有 分解 模块 其中应包含 LatentDirichletAllocation 函数 请参阅此处的文档 https scikit learn org s
  • 根据机会创建销售订单时填充自定义字段

    我在 SO 屏幕 SO301000 上创建了一个自定义字段 联系人 现在 当用户从机会屏幕 CR304000 创建销售订单时 我需要填充这些字段 新的自定义字段联系人基于在机会中选择的客户 我可以看到 当我从机会创建销售订单时 客户会自动填
  • 带 webusb 的指纹扫描仪

    可以将 USB 指纹扫描仪与 webusb 连接 配对 https wicg github io webusb https wicg github io webusb 我有数字角色 U are U 4500 想要使用react js 连接到
  • 使用 Codename One 在 WebView 上实现 WebRTC

    我正在开发一个应用程序 我需要使用 Android 的 WebView 包含 WebRTC 根据这篇文章 https developer chrome com multidevice webview overview https devel
  • 使用 JSON 响应

    执行 ajax 请求后 我从服务器收到以下响应 error false success true 我的ajax代码 ajax url update type post data this serialize success function
  • HashSet 是否与 List 相同但具有唯一性?

    我需要有能力在收藏中拥有独特的物品 我打算使用字典 这样我就可以使用 ContainsKey 方法 但我认为这会很浪费 因为我不会使用键 值对的 Value 属性 我遇到了HashSet
  • 如何使表单仅位于应用程序的最顶层?

    我正在制作 Excel 插件 其中单击菜单项或工具栏按钮 打开表单 我已将窗体的最顶层设置为 true 但它仍然是 Windows XP 的所有应用程序的最顶层 我只需要保持 Microsoft Excel 的最高位置即可 我在 Visua
  • 如何在接收端打开没有 SSHD 的 shell?

    我有一台没有 SSHD 的机器 我想从远程机器 我可以完全控制 在这台机器上打开 bash shell 由于我的有限机器上有 SSH 因此我配置了反向代理 ssh R 19999 localhost 22 remoteuser remote
  • Xcode 更改未修改的 Storyboard 和 XIB 文件

    从 git 工作流程的角度来看 当多人协作时 故事板是一种巨大的痛苦 例如 storyboard 文件中的 XML 有其起始位置
  • 如何循环遍历 Windows 窗体窗体中的所有控件或如何查找特定控件是否是容器控件?

    我会告诉我的要求 我需要有一个keydown中每个控件的事件Windows 窗体 http en wikipedia org wiki Windows Forms形式 如果我必须对所有 keydown 事件执行的操作相同 那么最好这样做 而