如何在列表框项上设置焦点

本文关键字:设置 焦点 列表 | 更新日期: 2023-09-27 18:07:53

我有一个这样定义的列表框:

var listBox = new ListBox();
listBox.Items.Add(1);        
listBox.Items.Add(2);
listBox.Items.Add(3);

我想将焦点直接设置为列表框中的一个项目。

如果我这样做:

listBox.SelectedIndex = 0;
listBox.Focus();

焦点被设置为整个listBox,所以如果我按箭头向下移动选择到下面的项目,我必须按箭头两次。第一次焦点从整个listBox跳到第一个项目,然后当我可以再次按箭头,选择最终跳下来。

我想把焦点直接设置在第一项上,这样我就不用按两次箭头了

如何在列表框项上设置焦点

var listBoxItem =  
   (ListBoxItem)listBox
     .ItemContainerGenerator
       .ContainerFromItem(listBox.SelectedItem);
listBoxItem.Focus();

这是一个类似的(如果不相等)问题将焦点放在ListBox项上会破坏键盘导航

和代码(我不与WPF搞混,所以我不能保证这工作,但它被我链接的线程接受,所以它可能):

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    listBox.Focus();
    listBox.SelectedIndex = 0;
    ((ListBoxItem)listBox.SelectedItem).Focus();
}

不能在列表框项上使用Focus.()。然而,你可以选择的项目,这是几乎相同的事情,你正在寻找做。listbox.SelectedIndex = 0;