gpt4 book ai didi

c# - 按下箭头键跳转组合框

转载 作者:太空宇宙 更新时间:2023-11-03 21:30:25 26 4
gpt4 key购买 nike

当我在每个将 tabstop 属性设置为 true 的控件上按 UP/DOWN 箭头 时,将选择 PREVOIUS/NEXT tabindex。它工作正常,但是当 ComboBox 聚焦时它改变它的值导致它也被困住箭头。

如何在不将击键发送到ComboBox的情况下实现tabindex跳转?

处理 tabindex 跳转的代码:

private void ParentForm_KeyDown(object sender, KeyEventArgs e)
{
Control ctl;
ctl = (Control)sender;
if (e.KeyCode == Keys.Down || e.KeyCode == Keys.Enter)
{
ctl.SelectNextControl(ActiveControl, true, true, true, true);

}
else if (e.KeyCode == Keys.Up)
{
ctl.SelectNextControl(ActiveControl, false, true, true, true);

}



}

最佳答案

您不能使用 KeyPreview 或窗体的 KeyDown 事件执行此操作。这是 VB6 的遗留问题,导航键在触发 KeyDown 之前被拦截。您必须改写表单的 ProcessCmdKey() 方法。

用这种方式解决问题通常很难看,它是针对局部问题的全局解决方案。当您执行此操作时,您将破坏其他控件,例如 RichTextBox 或多行 TextBox,让您的用户完全困惑为什么他们行为不端。更简洁的方法是创建您自己的 ComboBox 控件,它不会吞下光标键。向您的项目添加一个新类并粘贴如下所示的代码。编译。从工具箱顶部放下新控件,替换现有组合。

using System;
using System.Windows.Forms;

class MyComboBox : ComboBox {
protected override bool IsInputKey(Keys keyData) {
if ((keyData == Keys.Up) || (keyData == Keys.Down)) return false;
return base.IsInputKey(keyData);
}
}

关于c# - 按下箭头键跳转组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24584985/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com