如何将光标从文本框中移出

本文关键字:移出 文本 光标 | 更新日期: 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;
        }
    }
}

希望这能有所帮助。