【发布时间】:2011-01-13 23:45:56
【问题描述】:
我有一个 ListBox,上面有一个 TextBox。我想使用箭头键从 ListBox 导航到 TextBox。
目的是如果 ListBox 中的第一项被选中,并且用户向上键,TextBox 将获得焦点。
我几乎可以完成这项工作,但问题是当用户按下键时,SelectedItem 会在引发 KeyUp 事件之前更改。这意味着当用户选择了 ListBox 中的 second 项时,会发生到 TextBox 的导航。
如何在 ListBox 的第一项上捕获 keyup 事件?
<StackPanel>
<TextBox Name="TextBox1"></TextBox>
<ListBox Name="ListBox1" KeyUp="ListBox_KeyUp">
<ListBoxItem>a</ListBoxItem>
<ListBoxItem>b</ListBoxItem>
<ListBoxItem>c</ListBoxItem>
</ListBox>
</StackPanel>
private void ListBox_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Up)
{
if (this.ListBox1.SelectedIndex == 0)
this.TextBox1.Focus();
}
}
【问题讨论】:
-
你有没有想过用 KeyDown 来代替?
-
@Lazarus: KeyDown 没有提出 :)
-
@Greg Sansom:那很奇怪,也许您在 ListBox 上没有看到 KeyDown,但它可能在 ListBoxItem 级别? PreviewKeyDown 或 PreviewKeyUp 似乎也提供了有趣的可能性。
-
@Lazarus:其实
KeyDown是为ListBoxItem引发的,但它也是在SelectionChanged之后引发的。 -
@Greg:这更有意义!!希望我能帮上忙,祝你好运。
标签: .net wpf event-handling listbox