C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Listviewのフォーカス移動

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■93790 / inTopicNo.1)  Listviewのフォーカス移動
  
□投稿者/ もぐら (1回)-(2020/01/31(Fri) 16:01:35)

分類:[C#] 

Windowsアプリケーションで開発しています。
ボタンClickのイベントにより
ListViewで選択行のフォーカスを1行ずつ下に移動させたいです。

しかし、Clickすると現在の選択行と1行下の行の2行を選択してしまう状況です。
どうすればいいでしょうか?

private void Button1_Click(object sender, EventArgs e)
{
int nextIndex = listView1.SelectedItems[0].Index + 1;
listView1.Items[nextIndex].Selected = true;
listView1.Items[nextIndex].Focused = true;
listView1.Focus();
listView1.Select();
listView1.EnsureVisible(nextIndex);
}

引用返信 編集キー/
■93791 / inTopicNo.2)  Re[1]: Listviewのフォーカス移動
□投稿者/ Hongliang (952回)-(2020/01/31(Fri) 16:10:06)
2020/01/31(Fri) 16:20:01 編集(投稿者)

選択とフォーカスは別の概念ですが、両方とも移動させたいってことでいいんですよね?
<追記>例えば、Ctrl+カーソルキー上下で、選択状態をそのままにフォーカスだけ移動させることができます。</追記>

ListViewは既定では複数アイテムを選択できます(Ctrlを押しながらクリックとかで操作できます)。
単体アイテムしか選択できないようにしたいのであれば、MultiSelectプロパティをfalseに設定しておけば、お書きのコードで問題ないでしょう。
複数アイテムを選択できるがそのボタンを押したときは1つのアイテムのみ選択という挙動にしたいのであれば、nextIndex以外のすべてのアイテムのSelectedをfalseにするようにします。
// 複数アイテム選択可能な場合、.SelectedItems[0]がどこを指すのかという問題もありますが。
引用返信 編集キー/
■93792 / inTopicNo.3)  Re[2]: Listviewのフォーカス移動
□投稿者/ もぐら (2回)-(2020/01/31(Fri) 16:17:25)
No93791 (Hongliang さん) に返信
> 2020/01/31(Fri) 16:13:44 編集(投稿者)
>
> ListViewは既定では複数アイテムを選択できます(Ctrlを押しながらクリックとかで操作できます)。
> 単体アイテムしか選択できないようにしたいのであれば、MultiSelectプロパティをfalseに設定しておけば、お書きのコードで問題ないでしょう。

MultiSelectプロパティをfalseに設定したら期待した動作をしてくれました。
ありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ