如何使用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