VB.NETでListViewで表示された各行に対して、クリックすると選択し、再度クリックすると選択を解除するような処理を行いたいと思っています。
たとえば、リストの1行目をクリックすると1行目が選択されます。続けて2行目をクリックすると1行目の選択はそのままで2行目も選択されます。次に2行目をクリックすると2行目の選択が解除され、1行目のみの選択になります。
以上のような処理は実現可能なのでしょうか?
よろしくお願いいたします。
標準で、Ctrl キーを押しながらクリックすれば、そのように選択されますよ。
フラグ等を設定するなりすればできますが、そのような動作は、好ましい事ではありません。
『花ちゃん』さん、ありがとうございます。
>標準で、Ctrl キーを押しながらクリックすれば、そのように選択されますよ。
キーボードは使用せずにマウスでの操作のみを考えた場合に、CtrlやShiftキーでの複数選択は使用できないので、マウスのみを使った複数選択は、クリック選択・選択解除しかないかなと考えた次第です。
>フラグ等を設定するなりすればできますが、そのような動作は、好ましい事ではありません。
やはり内部的に操作する方法はあまりよろしくないのでしょうか?
OSの標準的な動作にあわない動作を組み込むと、使いづらいものになります。
来夏さんの開発したアプリケーションしか使わない人なら良いでしょうが、
Excel や一般のアプリケーションを使う人は、Ctrl + クリックが選択する
操作ですから、来夏さんの開発したアプリケーションを使う時にクリックのみ
の操作を覚える必要が出てきてしまいます。
更に、既存の操作で似たものがある場合など、同じ処理を違う操作で組み込むと、
処理によっては動作がかぶって不具合を起こしやすくなります。
ListView の場合、CheckBoxes プロパティを設定する事でコントロールの各項目の
横にチェックボックスを表示できます。これを使うか、Ctrl キーを使用する操作
を使うほうが良いでしょう。
『特攻隊長まるるう』さん、ありがとうございます。
>OSの標準的な動作にあわない動作を組み込むと、使いづらいものになります。
考えてみればそうですよね。私の作ったアプリケーションのみ操作方法が異なると使いづらいものになってしまいますよね。
>ListView の場合、CheckBoxes プロパティを設定する事でコントロールの各項目>の横にチェックボックスを表示できます。これを使うか、Ctrl キーを使用する操>作を使うほうが良いでしょう。
チェックボックスのほうは頭にありませんでしたのでこちらを少し試してみたいと思います。ありがとうございました〜。
ツイート | ![]() |