0

listView を作成しました。ユーザーが 1 つの要素をクリックして上矢印キーまたは下矢印キーを押すと、要素がそこに移動し、要素が選択されたままになります。上矢印キーでは完全に機能しますが、スイッチ「case Keys.Down」の下に同じコードを貼り付けると、listView の TOP 要素のみが選択されたままになります。とても奇妙です!Keys.Left および Keys.Right スイッチの下にも同じコードを貼り付けました。コードはそこで完全に機能しますが、スイッチを Keys.Down に変更するとすぐに、一番上の要素だけが選択されたままになります。なぜこれが起こるのか誰にも分かりますか?

4

1 に答える 1

2

ダウンケースでは、オフセットが異なる必要があります。同じもの(-1)を使用します。ダウンでは、次のように+1する必要があります:

newSpot = listOrderNames.IndexOf(listView.SelectedItems[0].Text) + 1;
index = listOrderNames.IndexOf(listView.SelectedItems[0].Text) + 1;

また、あなたはこれをもっときれいに書くことができます

int offset = 0;
case Keys.Up:
    offset = -1; 
    break;
case Keys.Down:
    offset = 1;
    break;
if (listView.SelectedItems.Count > 0) 
{
    int newSpot = 0;
    int index = 0;
    if (listOrderNames.IndexOf(listView.SelectedItems[0].Text) == 0) 
    {
        reorder(0, true);
        newSpot = listOrderNames.Count + offset;
    }
    else 
    {
        newSpot = listOrderNames.IndexOf(listView.SelectedItems[0].Text) + offset;
        index = listOrderNames.IndexOf(listView.SelectedItems[0].Text) + offset;
        swap(listOrderNames.IndexOf(listView.SelectedItems[0].Text), newSpot);
    }
    for (int i = 0; i < listView.Items.Count; i++) 
    {
        listView.Items[i].Selected = false;
    }
    listView.Items[newSpot].Selected = true;
}
于 2012-04-09T01:00:03.730 に答える