如何在C#windows窗体应用程序中使用低于当前控件的tabindex将焦点发送到控件?

时间:2011-12-26 10:21:49

标签: c# .net

在我的C#Windows窗体应用程序中,我在窗体中有许多TextBox控件,用户输入要保存在数据库中的数据。我希望用户能够通过向上和向下箭头将焦点更改为每个TextBox .I可以为向下箭头执行此操作,因此当用户按下向下箭头时,焦点将设置为具有较高tabindex到SendKey(“Tab”)的文本框。但是我不能为UP箭头这样做,所以当用户按下向上箭头焦点设置为具有较低tabindex的文本框时,请帮忙吗?

4 个答案:

答案 0 :(得分:9)

您可以使用Control.SelectNextControl()而不是使用SendKey(),并使用forward=false向后搜索。

答案 1 :(得分:4)

你可以尝试像SendKeys.Send("+{TAB}");那样会模仿Shift键+标签,所以应该带你回去

答案 2 :(得分:4)

在文本框之间移动的最佳方法是使用 Control.SelectNextControl + forward参数。

检查下面的代码,每次用户在表格上按下键时,下一个控件都会被激活:

private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        Control ctl;
        ctl = (Control)sender;
        if (e.KeyCode == Keys.Down )
        {
            ctl.SelectNextControl(ActiveControl, true, true, true, true);
        }
        else if (e.KeyCode == Keys.Up)
        {
            ctl.SelectNextControl(ActiveControl, false, true, true, true);
        }
    }

不要忘记将表单的keypreview设置为true。

答案 3 :(得分:2)

您可以发送Shift + Tab,查阅有关如何使用SendKeys执行此操作的文档

http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.aspx