항목이 텍스트 상자 인 목록 상자가 있습니다. 포커스를 다음 텍스트 상자로 변경하고 내용 편집을 시작하려면 키를 설정해야합니다. 내가 예를 들어, 내가 원하는 것을 달성하기 위해 키 스트로크를 보내는 솔루션 비리가있다 :텍스트 상자의 포커스 목록 변경 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]); }};
}
예제 코드를 약간 정리하면 질문에 대한 더 많은 답변을 찾을 수 있습니다. 처음부터 너무 많이 성명을 발표하지 마십시오. –