TreeView 重新获得 Ctrl+Click 的焦点

2023-12-06

我有一个 WinForms TreeView 控件,我想用它来根据当前选择的节点打开另一个窗体。我想在按住 Ctrl 键并单击节点时打开另一个窗体。

目前,如果我在 DoubleClick 处理程序中打开另一个表单(显然是双击该节点),它就会按照我想要的方式工作;但是,如果我使用 Click(或 MouseClick)处理程序并在按下 Control 键时打开另一个窗体,它将正确打开另一个窗体,但将焦点返回到原始窗体。

打开另一个表单后,如何保持焦点不返回到原始表单(我仍然想保持打开状态)?为什么 Click 和 DoubleClick 处理程序之间有不同的行为?


事件返回后,TreeView 夺回焦点。很烦人。您可以使用一个技巧:使用 Control.BeginInvoke 延迟事件的操作:

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) {
  this.BeginInvoke(new TreeNodeMouseClickEventHandler(delayedClick), sender, e);
}
private void delayedClick(object sender, TreeNodeMouseClickEventArgs e) {
  // Now do your thing...
}

一旦 TreeView 的所有事件完成运行并且您的程序进入空闲状态并重新进入消息循环,delayedClick 方法就会运行。

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

TreeView 重新获得 Ctrl+Click 的焦点 的相关文章

随机推荐

  • 转换为表后如何获取 VARRAY 项的索引

    在下面的示例中 我创建了一个包含 3 个项目的 VARRAY TEST XE gt select t1 t2 from 2 select X as t1 from dual UNION select Y from dual t1 3 tab
  • Java 的 UUID.nameUUIDFromBytes 用 Ja​​vaScript 编写?

    我有一个我无法控制的使用 Java 的第三方应用程序UUID nameUUIDFromBytes创建一个字符串 我需要重现这个用 JS 编写的函数 In OpenJDK的源码我找到了这个 public static UUID nameUUI
  • 泛型和 Marshal/UnMarshal。我在这里缺少什么?

    最好提一下这一点 我正在使用 Delphi XE2 但 XE 或 2010 也应该可以解决问题 此问题现已位于质量中心QC 99313请投票 截至 2011 年 10 月 20 日 Embarcadero 已将 QC 报告标记为 已解决 S
  • 使用 DatePicker 选择多个日期

    我正在尝试创建一个选择多个日期的 DatePicker 我可以选择多个日期 但我想在选择它们时保持 DatePicker 打开 问题是 每次我选择日期时 DatePicker 都会关闭 我不想使用私有 API 我正在考虑添加这个 dateP
  • 为什么 HTML 认为“chucknorris”是一种颜色?

    为什么某些随机字符串在 HTML 中作为背景颜色输入时会产生颜色 例如 bgcolor chucknorris 产生一个红色背景 test 反过来 bgcolor chucknorr 产生一个黄色背景 test 这在各种浏览器和平台上都是如
  • 无法显示 AdMob 横幅、收到错误 HTTP 响应代码:400 等

    无论我做什么 我都无法显示来自 Admob 的横幅 我在两个不同的 Android 设备上进行了测试 以下是我得到的结果 第一个设备 I Ads 8161 Starting ad request I Ads 8161 Please set
  • 无法创建 deno docker 镜像

    我想创建deno使用 Dockerfile 生成 docker 镜像 FROM alpine latest WORKDIR RUN apk update apk upgrade RUN apk add curl RUN curl fsSL
  • 如何将 std::variant 的元素复制到另一个变体类型的变量

    这是后续这个答案 假设我们有两种类型std variant具有部分相同的成员类型 例如如果我们有 struct Monday struct Tuesday etc using WeekDay std variant
  • Snakemake - 下载数据的规则

    我在实现管道时遇到一些麻烦 其中第一步是从某个服务器下载数据 据我了解 所有规则都必须有文件输入 然而 在我的例子中 输入 是提供给访问服务器并下载数据的脚本的 ID 字符串 我知道远程文件Snakemake 中的选项 但我正在下载的服务器
  • 在同一场景上加载多个视频时 Unity 应用程序冻结

    从菜单导航到包含 8 个 1 分钟 MP4 视频的场景时 这些视频在 RawImage 组件上使用新的 VideoPlayer 脚本进行播放 我使用的是Unity 5 6 0b11测试版 在我尝试导航的场景中 预制件会在列表缩略图中加载视频
  • 保护 NodeJS 的 post 路由

    我正在开发一个 NodeJS 应用程序 到目前为止 我了解到您可以使用 JWT 保护路由 并且我已经实现了这一点 问题是 我不确定如何保护允许用户发帖的路由 我们以注册路由为例 该路由将用于用户注册 我希望用户能够发布此内容 但只能从我的应
  • Excel:使用 vba 添加评论作者

    当我手动向单元格添加注释 使用插入注释命令 时 文本前面会以粗体显示我的用户名 是否可以为创建的评论复制此特征vba using Range AddComment 对于运行宏的用户 您可以添加登录的用户名 用户名以粗体显示 如下所示 此示例
  • 如何让Flask跨两台不同的机器与Flask通信?

    我在一台机器上有一个 Flask 应用程序 在第二台机器上需要运行一些查询 第二台机器不渲染任何页面 它只是在第一个应用程序的幕后做一些事情 如果我在第二台计算机上创建 Flask 应用程序来控制这些查询 我如何从第一个应用程序与其进行通信
  • JS > FTP > 网页目录 > 文件列表

    是否可以使用 Javascript 调用对指定 URL 的 FTP 调用并检索此 Web 目录中的所有文件 假设您正在讨论浏览器中的 javascript 那么如果没有一些支持的服务器端代码 这是不可能的 您可以使用 javascript
  • 在 Windows 任务计划程序中更改已计划任务的运行时间

    我在修改机器上已存在的任务时遇到问题 我正在尝试使用 C 生成的互操作接口 从 system32 taskschd dll 生成的 Interop TaskScheduler dll 来执行此操作 首先 我无法使用其他库 例如http ta
  • Java try-finally返回设计问题

    在 Java 中 try finally 的执行对我来说有点不直观 正如另一个问题中所说明的 Java中finally总是执行吗 如果try块中有return语句 如果定义了finally块 它将被忽略 例如 函数 boolean test
  • Android:如何在应用程序中集成admob?

    我试图将 admob 横幅集成到我的应用程序中几个小时 但我做不到 所以我创建了新的应用程序 其唯一目的是显示 admob 横幅 但它也不起作用 这是代码 public class MainActivity extends Activity
  • 如何以编程方式从 Windows 手机访问 SMS 消息线程 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我想访问 Windows Phone 上的所有消息并备份它或在 PC 手机上复制它 我搜索了这个 但无法在互联网上找到它 有没有可用的 API 来实现这一点 这仅适用于 Wind
  • Breezejs 与保存包有关的问题

    我使用breezejs 我的应用程序的服务器端代码是 net 在我看来 客户端 我想添加实体 然后我想保存它 让我们假设一个实体是这样的 Id 1 Name someName CreatedDate 1900 01 01T05 00 00Z
  • TreeView 重新获得 Ctrl+Click 的焦点

    我有一个 WinForms TreeView 控件 我想用它来根据当前选择的节点打开另一个窗体 我想在按住 Ctrl 键并单击节点时打开另一个窗体 目前 如果我在 DoubleClick 处理程序中打开另一个表单 显然是双击该节点 它就会按