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

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

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

你可以试试像SendKeys.Send("+{TAB}"); 这将模拟一个Shift键+ Tab,所以应该带你回来

在Textbox之间移动的最佳方法是使用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。

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

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