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