我有一个列表框,其中的项目是文本框。我需要设置一个键将焦点更改为下一个文本框并开始编辑其内容。 我已经被骗送液击键达到我想要的东西,例如:更改文本框的焦点列表WPF
((TextBox)listBox1.Items[0]).KeyDown += (object x, KeyEventArgs y) => {
if (y.Key == Key.Enter) {
InputSimulator.SimulateKeyDown(VirtualKeyCode.TAB);
InputSimulator.SimulateKeyPress(VirtualKeyCode.DOWN);
InputSimulator.SimulateKeyDown(VirtualKeyCode.TAB);
}
};
我在这里使用http://inputsimulator.codeplex.com/发现这种做法库InputSimulator。 我知道这不是正确的方法,所以我问我如何使用焦点方法实现相同。我尝试用下面的代码,但我得到“超出范围”的错误,我不明白:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
for (int i = 0; i < 3; i++)
{
listBox1.Items.Add(new TextBox() {
TabIndex=i
});
}
for (int i = 0; i < listBox1.Items.Count-1; i++)
{
((TextBox)listBox1.Items[i]).KeyDown += (object x, KeyEventArgs y) => { if (y.Key == Key.Tab) { Keyboard.Focus((TextBox)listBox1.Items[i+1]); } };
}
((TextBox)listBox1.Items[listBox1.Items.Count - 1]).KeyDown += (object x, KeyEventArgs y) => { if (y.Key == Key.Tab) { Keyboard.Focus((TextBox)listBox1.Items[0]); }};
}
如果您稍微清理示例代码,您可能会发现对您的问题的更多回复。不要将你的陈述列入首发名单。 –