gpt4 book ai didi

c# - 当文本框具有焦点而不移动光标时,使用向上/向下键滚动列表框

转载 作者:行者123 更新时间:2023-11-30 14:51:50 26 4
gpt4 key购买 nike

我有一个TextBox,用户可以在其中输入搜索词,还有一个ListBox,可以显示结果。还有一个按钮将根据单击时选择的项目显示一些信息。

我正在尝试使用向上和向下箭头键滚动列表框,这样用户就不必单击项目,然后单击按钮。那时我还不如只依靠双击事件来完成工作,因为它们已经在项目上了。但是,我正在努力使它更加“仅键盘友好”。
以下代码有效,但有一个小缺陷:

private void txtSearchTerm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Down && Results.SelectedIndex < (Results.Items.Count - 1))
{
Results.SelectedIndex++;
}
else if (e.KeyCode == Keys.Up && Results.SelectedIndex > 0)
{
Results.SelectedIndex--;
}
}

使用此代码,光标仍会随着所选项目的变化而左右移动。我希望它保持原样(而不是强制它结束)。我在 txtSearchTerm.Select(...) 事件中运气不佳,但我想我可能漏掉了一些东西...

有一个 TextChanged 事件,但它只调用我编写的搜索函数,该函数在用户键入时填充列表框,因此为简单起见,我将省略该代码。

我是否遗漏了一些东西或忽略了一些方法来使这个 TextBox/ListBox 组合功能按照我的意图运行?

快速说明:如果您曾经使用过 UltraEdit,我基本上是在尝试模仿该配置窗口的行为。

最佳答案

您应该使用 e.Handled = true; 使用您处理的 key 取消:

private void txtSearchTerm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Down)
{
if (Results.SelectedIndex < (Results.Items.Count - 1))
Results.SelectedIndex++;
e.Handled = true;
}
else if (e.KeyCode == Keys.Up)
{
if (Results.SelectedIndex > 0)
Results.SelectedIndex--;
e.Handled = true;
}
}

我设置 e.Handled = true; 如果键是 Keys.DownKeys.Up 而不管 SelectedIndex 使用这些键完全禁用移动插入符号。

关于c# - 当文本框具有焦点而不移动光标时,使用向上/向下键滚动列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33372925/

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