如何将光标移出文本框?

时间:2015-07-29 07:51:02

标签: c# visual-studio-2013

我有一个非常复杂的视觉工作室形式,我有两个文本框,以及我的项目需要的一些其他东西,但我的问题是 - 我想使用箭头键来完成任务(将它们绑定为快捷方式)只有当我不编辑我的文本框时才会这样做,否则我会陷入其中,即使我尝试重置光标(点击表格),它也会停留在文本框中,我只能在字符之间跳转,不要像我捆绑他们那样使用我的箭头。所以我的两个问题是 -

如果我之前选择了一个文本框,如何重置光标?

如何取消绑定我的默认箭头键,使它们不会在字符和按钮之间跳转?

2 个答案:

答案 0 :(得分:0)

尝试在捕获箭头键击的文本框上添加键事件并相应地移动焦点。

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();
        }
    }

请注意,这将删除在文本框中的字符之间导航的功能。我认为小键盘箭头可能仍然在文本框内工作,因为它们有不同的密钥代码,但我现在无法确定。

答案 1 :(得分:0)

嗨,欢迎来到stackoverflow,我不确定我是否有完整的答案,但我对这个问题有一些了解。

  • 很难回答没有一些代码,关于你如何关闭我认为的诅咒?
  • 为什么一开始呢?似乎过分夸大它?

我想要解决这个问题的方式,首先要将缪斯诅咒全部放在一起,然后在文本框上创建一个KeyDown事件,这个事件需要能够像这样转移到下一个< / p>

    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 ? 
        }
    }

虽然如果你使用mulitlines文本框或其他已经拥有这些键绑定的控件,这将会很奇怪。

你还可以添加一个字段布尔值来作为开关来启用键,这些键在文本框激活时设置(那就是当你点击它来写文本时会发生什么)它可以被重用,然后它看起来像这样

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;
        }
    }
}

希望这会有所帮助。