gpt4 book ai didi

.net - 如何在 ListBox 的第一项上捕获 keyup 事件?

转载 作者:行者123 更新时间:2023-12-02 00:35:45 25 4
gpt4 key购买 nike

我有一个 ListBox,上面有一个 TextBox。我想使用箭头键从列表框导航到文本框。

目的是如果选择了 ListBox 中的第一项,并且用户向上键,TextBox 将获得焦点。

我几乎可以正常工作,但问题是当用户键入时,SelectedItem 在 KeyUp 事件引发之前发生了变化。这意味着当用户选择了 ListBox 中的第二个项时,就会导航到 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();
}
}

最佳答案

假设你真的想这样做,你可以使用 PreviewKeyDown 如下:

    <StackPanel>
<TextBox Name="textBox1"/>
<ListBox PreviewKeyDown="ListBox_PreviewKeyDown">
<ListBoxItem Content="Item1" />
<ListBoxItem Content="Item2"/>
<ListBoxItem Content="Item3"/>
</ListBox>
</StackPanel>

使用此代码隐藏:

    private void ListBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (sender is ListBox)
{
var listBox = sender as ListBox;
if (listBox.Items.Count > 0)
{
if (e.Key == Key.Up && listBox.Items.Count > 0 && listBox.SelectedIndex == 0)
{
textBox1.Focus();
e.Handled = true;
}
}
}
}

关于.net - 如何在 ListBox 的第一项上捕获 keyup 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4686625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com