我正在尝试编程两个按钮来模仿向上/向下箭头键行为,这意味着当我按下按钮向上时,它会向上移动列表框中的一个项目,依此类推。我写了以下代码:
private void mainlistup(object sender, System.Windows.RoutedEventArgs e)
{
if (listBox_Copy.SelectedIndex != -1 &&
listBox_Copy.SelectedIndex < listBox_Copy.Items.Count &&
listBox_Copy.SelectedIndex !=1)
{
listBox_Copy.SelectedIndex = listBox_Copy.SelectedIndex - 1;
}
}
private void mainlistdown(object sender, System.Windows.RoutedEventArgs e)
{
if (listBox_Copy.SelectedIndex < listBox_Copy.Items.Count &&
listBox_Copy.SelectedIndex != -1)
{
listBox_Copy.SelectedIndex = listBox_Copy.SelectedIndex + 1;
}
}
然而,当按下该按钮时,该项目将失去其选择...正确设置选择索引(其他数据绑定项目,绑定到所选项目显示正确的值)但列表框项目不再突出显示。如何将所选项目设置为突出显示?
答案 0 :(得分:5)
您的ListBox可能刚刚失去焦点。设置SelectedIndex
后,请执行以下操作:
listBox_Copy.Focus();
答案 1 :(得分:2)
正如GenericTypeTea所说,这听起来很可能与失去焦点有关。然而,另一个问题是您的代码过于复杂,并且不会让您转到顶部的项目。我建议将其更改为:
向上移动
if (listBox_Copy.SelectedIndex > 0)
{
listBox_Copy.SelectedIndex = listBox_Copy.SelectedIndex - 1;
}
向下移动
if (listBox_Copy.SelectedIndex < listBox_Copy.Items.Count - 1)
{
listBox_Copy.SelectedIndex = listBox_Copy.SelectedIndex + 1;
}