如何将光标从文本框中移出
本文关键字:移出 文本 光标 | 更新日期: 2023-09-27 18:05:12
我有一个非常复杂的visual studio表单,其中有大约2个文本框,以及我的项目所需的一些其他东西,但我的问题是——我想使用箭头键来完成任务(像快捷键一样绑定它们(,只有当我不编辑文本框或陷入其中时,我才能做到这一点,即使我试图重置光标(点击表单(,它也会停留在文本框中,我只能在字符之间跳转,而不能像绑定箭头那样使用箭头。所以我的两个问题是
如果我之前选择了一个文本框,如何重置光标?
如何解除默认箭头键的绑定,使它们不会在字符和按钮之间跳跃?
尝试在文本框上添加一个关键事件,以捕捉箭头键笔划并相应地移动焦点。
void inputField_KeyDown(object sender, KeyEventArgs e)
{
if ((e.KeyCode == Keys.Left) || (e.KeyCode == Keys.Right) || (e.KeyCode == Keys.Up) || (e.KeyCode == Keys.Down))
{
//nextControl.Focus();
}
}
请注意,这将取消在文本框中的字符之间导航的功能。我认为numpad箭头可能在文本框中仍然有效,因为它们有不同的键代码,但我现在不能确定。
嗨,欢迎来到stackoverflow,我不确定我是否有完整的答案,但我对这个主题有一些想法。
- 如果没有一些代码,很难回答,我想你是如何关闭curser的
- 为什么一开始就必须这样做?似乎有点过于复杂了
我想做的是,一开始把缪斯卷发器放在一起,然后在文本框上做一个KeyDown事件,需要能够像一样转移到下一个
private void yourControl_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Down || e.KeyData == Keys.Up)
{
// shift to next textbox maybe, to keep thing simple ?
}
}
不过,如果您使用多行文本框或allready绑定了这些键的其他控件,这将起到更大的作用。
你可以添加一个字段布尔值作为开关来启用键,它在文本框激活时设置(这就是发生的事情,然后你点击它来写文本(,它可以重复使用,然后看起来像这个
class yourProgram
{
private bool fieldIskeysMode = false;
private void yourControl_KeyDown(object sender, KeyEventArgs e)
{
if (fieldIskeysMode) // if True
{
if (e.KeyData == Keys.Down || e.KeyData == Keys.Up)
{
// shift to next textbox maybe, to keep thing simple ?
}
if (e.KeyData == Keys.Escape) fieldIskeysMode = false; // one line set to falls on esc key
}
}
private void yourControl_Activate(object sender, KeyEventArgs e)
{
if (!fieldIskeysMode) // if not true
{
fieldIskeysMode = true;
}
}
}
希望这能有所帮助。