4

上/下矢印キーの動作を模倣するように2つのボタンをプログラムしようとしています。つまり、上にボタンを押すと、リストボックス内の1つの項目が上に移動します。私は次のコードを書きました:

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 が言うように、フォーカスの喪失に関係していると思われます。ただし、もう 1 つの問題は、コードが複雑すぎて、一番上の項目に移動できないことです。次のように変更することをお勧めします。

上に移動

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 に答える