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

わんくま同盟

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

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

ツリー一括表示

Listviewのフォーカス移動 /もぐら (20/01/31(Fri) 16:01) #93790
Re[1]: Listviewのフォーカス移動 /Hongliang (20/01/31(Fri) 16:10) #93791
  └ Re[2]: Listviewのフォーカス移動 /もぐら (20/01/31(Fri) 16:17) #93792 解決済み


親記事 / ▼[ 93791 ]
■93790 / 親階層)  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);
}

[ □ Tree ] 返信 編集キー/

▲[ 93790 ] / ▼[ 93792 ]
■93791 / 1階層)  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]がどこを指すのかという問題もありますが。
[ 親 93790 / □ Tree ] 返信 編集キー/

▲[ 93791 ] / 返信無し
■93792 / 2階層)  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に設定したら期待した動作をしてくれました。
ありがとうございました。
解決済み
[ 親 93790 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -