4

我正在尝试对两个按钮进行编程以模仿向上/向下箭头键的行为,这意味着当我按下向上按钮时,它会向上移动列表框中的一项,依此类推。我写了以下代码:

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;
    }
}

但是,这有效,当按下按钮时,项目失去其选择...选择索引设置正确(其他数据绑定项目,绑定到选定项目显示正确的值)但列表框项目不再突出显示。如何将所选项目设置为突出显示?

4

2 回答 2

5

您的 ListBox 可能刚刚失去焦点。设置后只需执行以下操作SelectedIndex

listBox_Copy.Focus();
于 2010-07-28T13:31:26.823 回答
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;
}            
于 2010-07-28T13:39:42.327 回答