处理 winform 文本框上的箭头键事件而不覆盖

2023-12-22

我遇到一种情况,我获得了一个 WinForms TextBox 实例,我想将自动完成功能附加到该实例。

我已经解决了自动完成(字符串匹配+下拉)的问题,并且到目前为止它工作可靠。

使用键盘导航下拉菜单的能力是什么(这是此类 UI 的标准)。

自然的解决方案是处理文本框的 KeyDown (或类似的)事件,并相应地移动下拉列表中的选择。

然而,要做到这一点,您需要覆盖IsInputKey()事件以允许捕获箭头键事件。另一种方法是覆盖ProcessCmdKey()并在那里处理事件。这两个的问题是我无法覆盖任何内容,因为我无法替换文本框实例。

Edit:假设我有以下代码:

void _textBox_KeyDown(object sender, KeyEventArgs e)
{
    if (_dropdown.Visible)
    {
        // TODO The stuff below fails because we need to either handle ProcessCmdKey or override IsInputKey
        switch (e.KeyCode)
        {
            case Keys.Tab:
                {
                    // click selected item
                    _dropdown.Items[GetSelectedItemIndex()].PerformClick();
                    break;
                }
            case Keys.Down:
                {
                    // select next (or first) item
                    int i = GetSelectedItemIndex() + 1;
                    if (i >= _dropdown.Items.Count) i = 0;
                    _dropdown.Items[i].Select();
                    break;
                }
            case Keys.Up:
                {
                    // select previous (or last) item
                    int i = GetSelectedItemIndex() - 1;
                    if (i < 0) i = _dropdown.Items.Count - 1;
                    _dropdown.Items[i].Select();
                    break;
                }
        }
    }
}

上面的代码的问题在于它是从未打电话过。该活动是从未触发箭头键。更多信息:上、下、左、右方向键不触发 KeyDown 事件 https://stackoverflow.com/questions/1646998/up-down-left-and-right-arrow-keys-do-not-trigger-keydown-event


我希望我没有误解你,但这是否是一个解决方案:

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Down)
    {
         // Place logic for textbox here
    }
}

我会在表单上使用 KeyDown 事件,然后将键码与 Keys.Down 键码进行比较

不工作

看这里:上、下、左、右方向键不触发 KeyDown 事件 https://stackoverflow.com/questions/1646998/up-down-left-and-right-arrow-keys-do-not-trigger-keydown-event

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

处理 winform 文本框上的箭头键事件而不覆盖 的相关文章

  • 如何使用 ILoggerFactory 记录 Polly 的重试

    或者 如何从静态方法记录 From https github com App vNext Polly https github com App vNext Polly你有这样的例子 其中记录器神奇地可用 Policy Timeout 30
  • MySql 最后插入 ID,连接器 .net

    我正在使用 MySql Connector net 我需要获取最后一个查询生成的插入 id 现在 我假设返回值是MySqlHelper ExecuteNonQuery应该是最后一个插入id 但它只返回1 我正在使用的代码是 int inse
  • 如何启动异步任务对象

    我想开始收集Task同时处理对象并等待所有对象完成 下面的代码显示了我想要的行为 public class Program class TaskTest private Task createPauseTask int ms works w
  • 操作/Lambda 表达式内存管理问题

    我将一个操作存储在局部变量中 然后在该局部变量超出范围后使用 使用前是否有被清理的危险 这是一个例子 public List GetMaps Action
  • 宏可以按参数数量重载吗?

    如何this https stackoverflow com q 9183993 153285工作 如何实现 C99 C 11 可变参数宏以仅根据为其提供多少个参数来扩展到不同的事物 编辑 请参阅末尾以获得现成的解决方案 要获得重载的宏 首
  • “包含字符串”的快速索引

    在我的应用程序中 我有多达数百万个短字符串 大部分短于 32 个字符 我想实现一个带有附加列表的搜索框 该列表仅包含包含在搜索框中输入的整个字符串的元素 如何预先建立索引来快速找到此类字符串 所有排序的 STL 容器都会检查整个字符串 对于
  • 将 Python 控制台集成到 GUI C++ 应用程序中

    I m going to add a python console widget into a C GUI below some other controls 许多类将暴露给 python 代码 包括一些对 GUI 的访问 也许我会考虑 P
  • Confuser .NET 混淆器。安全吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我目前正在开发一个应用程序 其中阻止用户反编译代码非常重要 现在 我意识到 如果由经验丰富的程序员执行 大多数 exe 都是可反编译的
  • 在不使用 ncurses 的情况下用 C/C++ 编写“真正的”交互式终端程序,例如 vim、htop...

    不 我不想使用ncurses 因为我想了解如何 终端可以工作 并且我自己编程也很有趣 没有 必须是可移植的 它必须只能在基于 linux xterm 的终端仿真器上工作 我想做的是编写一个交互式终端应用程序 例如 htop 和 vim 我的
  • StreamReader,C#,peek

    我有一个 StreamReader 它偶尔会检查它是否有更多内容可以从简单的文本文件中读取 它使用 peek 属性 问题是 当我使用 peek 时 位置发生了变化 尽管不应该发生 FileStream m fsReader new File
  • 在 C++ 中使用表达式模板进行符号微分

    如何在 C 中使用表达式模板实现符号微分 一般来说 您需要一种表示符号的方法 即编码的表达式模板 例如3 x x 42 以及一个可以计算导数的元函数 希望您对 C 中的元编程足够熟悉 知道这意味着什么和需要什么 但可以给您一个想法 This
  • 读取STM32 MCU SPI数据寄存器的值

    有很多类似的问题 但似乎没有一个问题完全相同 我正在将 STML4 MCU 连接到 6 轴传感器 LSM6DS3 我已经成功地在 I2C 中实现了所有内容 但想要 SPI 的额外速度 和 DMA 如果我能让这些第一步工作起来的话 因此 第一
  • C for 循环索引:新 CPU 中的前向索引更快吗?

    在我订阅的邮件列表上 两位知识渊博的 IMO 程序员正在讨论一些优化的代码 并说了以下内容 在 5 8 年前发布的 CPU 上 向后迭代 for 循环稍微快一些 e g for int i x 1 i gt 0 i 因为比较i归零比将其与其
  • 如何填充两个样条线或直线系列之间的区域

    我有这个Chart 如何填充两个之间的区域Series S0 and S1 说蓝色和黄色Series 为此 我们编写了其中之一Paint事件 这里的ValueToPixelPosition https msdn microsoft com
  • 带双重检查锁的单例设计模式

    假设您有以下代码 1 为什么我们使用双重检查锁 为什么单锁不够好 请提供详细的例子 2 这种实施方式的主要缺点是什么 我该如何证明呢 Thanks public sealed class SomeSingleton5 private sta
  • ASP.NET MVC 中 ModelState.AddModelError 中的关键参数有什么意义?

    我在我的控制器中添加了验证检查来修改ModelState如果验证失败 例如 private bool ValidateMoney string raw string name decimal min decimal max try var
  • 如何解决内存碎片

    我们偶尔会遇到这样的问题 长时间运行的服务器进程 在 Windows Server 2003 上运行 由于内存分配失败而引发异常 我们怀疑这些分配由于内存碎片而失败 因此 我们一直在寻找一些可能对我们有帮助的替代内存分配机制 我希望有人能告
  • 如何使用 xamarin 表单提示用户进行地理定位

    我正在 Xamarin Forms 应用程序中开发一个应用程序 需要请求地理位置权限 如果获得许可 它需要从设备获取地理位置数据 然后将地理位置坐标放入 Forecast io URL 我正在使用 James 的 Geolocator 插件
  • OpenGL 计算着色器调用

    我有一个与新计算着色器相关的问题 我目前正在研究粒子系统 我将所有粒子存储在着色器存储缓冲区中 以便在计算着色器中访问它们 然后我派遣一个一维工作组 define WORK GROUP SIZE 128 shaderManager gt u
  • 清理堆分配对象的良好实践或约定?

    我正在学习C 我有 C C ObjC 背景 相当高级的语言 在 C 或 ObjC 上 作为函数或方法的结果返回堆分配的对象是很简单的 因为对象的清理是受管理的 按照惯例 会在适当的时候销毁 但我不知道在 C 中应该如何处理这个问题 例如 s

随机推荐

  • 如何获取匹配 REGEX 后的文本

    我有字符串 我的家 和正则表达式 例如 reg hom 我正在努力找出如何在比赛后获取文本 直到单词结尾 在本例中我正在寻找 e 另一个例子 string soulful reg soul gt gt gt 我需要 完整 先感谢您 您可以使
  • GCC 内存屏障 __sync_synchronize 与 asm 易失性("": : :"内存")

    asm volatile memory 通常用作内存屏障 例如 如 Linux 内核中所示 barrier macro 这听起来类似于 GCC 内置的 sync synchronize http gcc gnu org onlinedocs
  • 气流错误:AttributeError:模块“airflow.utils.log”没有属性“file_processor_handler”

    我的本地气流即时已启动并正在运行 但现在当我运行气流网络服务器或任何其他气流命令时 我收到以下错误 带有一些回溯 Unable to load the config contains a configuration error Traceb
  • 通过代码向 Winforms DataGridView 添加新列

    我正在尝试为给定月份的每一天添加 N 列 var daysCount DateTime DaysInMonth DateTime Now Year month for int i 1 i lt daysCount i dataGridVie
  • 有条件地平均 DataTable 中的一列数据

    我有一个 DataTable 对象 dTable 其中所有 DataColumn 数据类型都是字符串或双精度 列中的某些数字不存在 即 空 现在我有下面的代码来查找平均值 并且当有值时它效果很好 var sum dTable AsEnume
  • 如何在没有流或系统 io 的情况下压缩字节数组

    我正在尝试将图像编码为字节数组并将其发送到服务器 编码和发送部分工作正常 但我的问题是字节数 组太大并且发送时间太长 所以我认为压缩它会让它运行得更快 但实际的问题是我不能使用 system io 或流 我的目标是 net 2 0 谢谢 u
  • 如何判断一个图是否有环?

    我知道这个问题在这个论坛和互联网上的其他地方已经被问过很多次了 但在你伸出爪子攻击我之前 请耐心等待 我是一个新手学习图 作为练习的一部分 我在此处的 Graph 类中添加了一个方法 has Cycle http homepage cs u
  • 当存在重复索引时,numpy 会保留分配顺序吗?

    我想通过索引数组对数组进行赋值 但存在重复的索引 例如 a np arange 5 index np array 1 2 3 1 2 3 1 2 3 b np arange 9 a index b 两个问题 对于重复索引 最新的分配总是生效
  • 对 NgRx 效果进行单元测试以确保服务方法被调用 - 不起作用

    我正在使用 NgRx 7 0 0 版本 这是我的 NgRx 效果类 import Injectable from angular core import ApisService from apis service import Effect
  • 将数据对象从父组件传递到子组件

    我正在列一个工具清单 我试图使用单个文件模板将完整的工具数据对象从父组件 工具列表 传递到每个子组件 工具项 在子组件中 我收到此错误 属性或方法 未在实例上定义 但在渲染期间引用 确保在数据选项中声明反应数据属性 Where 是工具数据对
  • Chrome 扩展选项卡从后台发送消息到内容脚本错误

    内容脚本 js chrome runtime onMessage addListener function request sender sendResponse console log sender tab from a content
  • R - 使用非标准评估检查字符串是否是有效的数学表达式

    我想检查下面的字符串是否是有效的数学表达式 s1 sin x s2 sin x m s3 sin s4 sin xm 我所说的 有效 是指该表达式是以下内容的组合 运算符 必须与变量或常量结合使用 变量x and or m 常数 根据这个定
  • 如何统一 Python Pyramid 视图来处理 Ajax/html 表单 POST

    我的 Python Pyramid 应用程序中有一些 HTML 表单 我希望它们在启用 JavaScript 和禁用 JavaScript 时通过 AJAX 工作 现在我对 AJAX 和普通表单帖子使用不同的视图 但这些功能的代码似乎几乎相
  • ASP.Net Web API 帮助页面返回空输出

    我有一个预先存在的 MVC 应用程序 我使用 Nuget 添加了 Web API 和 Web API 自文档 虽然 Web API 控制器运行良好 返回对 HTTP 请求的有效响应 但帮助控制器找不到任何要记录的 Web API 方法 在帮
  • PowerShell FINDSTR 等效项?

    DOS FINDSTR 的等效项是什么电源外壳 http en wikipedia org wiki Windows PowerShell 我需要在一堆日志文件中搜索 错误 这是快速答案 Get ChildItem Recurse Incl
  • 自定义 UIBarButtonItem 的活动区域更小

    我有一个带有自定义 UIBarButtonItem 的 UINavigationBar 它使用 UIButton 作为其自定义视图 问题是 自定义按钮的活动区域太大 如果我点击按钮外至少 40 像素 它仍然会被注册为点击按钮 这会导致意外点
  • 在 Cython 中生成随机数的规范方法

    生成伪均匀随机数 0 1 中的双精度数 的最佳方法是什么 跨平台 最好具有相同的相同样本序列 线程安全 显式传递 prng 或 内部使用线程本地状态 不带 GIL 锁 可轻松包装在 Cython 中 曾经有一个类似的post https s
  • Webpack 是否足够智能,可以让 jQuery 变得更轻?

    我知道这是一个非常简单的问题 但我还没有看到任何像这样简单的问题 答案 我正在尝试确定 jQuery 是否值得保留在我的 React 应用程序中 并且我几乎完全将它用于 ajax webpack 是否足够智能 可以仅在捆绑包中包含 jQue
  • JVM 属性 -Dfile.encoding=UTF8 还是 UTF-8?

    我想知道将文件编码设置为 UTF 8 的 Java 虚拟机 JVM 属性的值是多少 我放吗 Dfile encoding UTF8 or Dfile encoding UTF 8 这将是 UTF8 See here http downloa
  • 处理 winform 文本框上的箭头键事件而不覆盖

    我遇到一种情况 我获得了一个 WinForms TextBox 实例 我想将自动完成功能附加到该实例 我已经解决了自动完成 字符串匹配 下拉 的问题 并且到目前为止它工作可靠 使用键盘导航下拉菜单的能力是什么 这是此类 UI 的标准 自然的