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

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

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

Re[1]: リストビュー


(過去ログ 53 を表示中)

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

■30038 / inTopicNo.1)  リストビュー
  
□投稿者/ 紅蓮 (1回)-(2008/12/17(Wed) 16:19:06)

分類:[C#] 

リストビューの任意の列をクリックした時、SelectedやFocusedをtrueにしてその列を選択状態にしているのですが、
リストビューの余白(列のない場所)をクリックしたとき、選択状態を解除したいのですが、どうすればよいのでしょうか?
つたない日本語で申し訳ございません。
どなたかご教授お願いします。
引用返信 編集キー/
■30039 / inTopicNo.2)  Re[1]: リストビュー
□投稿者/ .SHO (438回)-(2008/12/17(Wed) 16:26:16)
No30038 (紅蓮 さん) に返信

リストビュー自体に何も選択されていない状態がないと思います。
見た目、何も選択されていないようにしたいだけなら Focus を移動すればできますが。

引用返信 編集キー/
■30041 / inTopicNo.3)  Re[2]: リストビュー
□投稿者/ 紅蓮 (2回)-(2008/12/17(Wed) 16:36:47)
では、余白を選んだ時に発生するイベントなどは存在しないということですね、、
Focusを何の文字もない余白部分に移すのはどうすればよいのですか?
引用返信 編集キー/
■30043 / inTopicNo.4)  Re[3]: リストビュー
□投稿者/ .SHO (439回)-(2008/12/17(Wed) 16:38:57)
No30041 (紅蓮 さん) に返信
> では、余白を選んだ時に発生するイベントなどは存在しないということですね、、

そんなことは言ってません。
リストビューはつねに何かを1つは選択しています。

> Focusを何の文字もない余白部分に移すのはどうすればよいのですか?

そんなことは出来ません。
リストビュー以外の部品にフォーカスを移動してください。
引用返信 編集キー/
■30046 / inTopicNo.5)  Re[1]: リストビュー
□投稿者/ カドルドエグ (65回)-(2008/12/17(Wed) 16:45:46)
No30038 (紅蓮 さん) に返信
> リストビューの任意の列をクリックした時、SelectedやFocusedをtrueにしてその列を選択状態にしているのですが、
> リストビューの余白(列のない場所)をクリックしたとき、選択状態を解除したいのですが、どうすればよいのでしょうか?
> つたない日本語で申し訳ございません。
> どなたかご教授お願いします。

他コントロールに移動するとき = Leaveイベントに(現在選択されているアイテムの)Selectedプロパティを
全てFalseにするしかないです。
「じゃあフォームは?」ということになりますが、これはまた別な話で…。


ただ、これを利用して無理やり「余白を作る」方法ならあります。
…「可能」というだけでオススメはしませんが…。

当方で実験したのは、
ListViewの裏にListViewより大きいTextBox
(BackColor:Control、BorderStyle:None、Cursor:Default、ReadOnly:True、MultiLine:True)
を設定します。
そして、TextBoxのEnterイベントに「タブ順でListViewの次にフォーカスさせたいコントロール」のFocusメソッドを入れておきます。

これで一見、余白をクリックしたら選択が解除されたように見せることができます。

        ---------こんな感じ---------
        private void listView1_Leave(object sender, EventArgs e)
        {
          // もし複数選択が可能なときはForかなんかでまわす必要アリ
            listView1.SelectedItems[0].Selected = false;
        }

       // textBox2 = ListViewの裏にいるTextBox
        private void textBox2_Enter(object sender, EventArgs e)
        {
            // 次にフォーカスさせたいところ
            textBox1.Focus();
        }

引用返信 編集キー/
■30055 / inTopicNo.6)  Re[4]: リストビュー
□投稿者/ .SHO (440回)-(2008/12/17(Wed) 17:00:33)
No30043 (.SHO さん) に返信

「選択状態を解除」が、見た目のことなのか、Selectedプロパティのことなのか
はっきりしないですが、Selectedプロパティのことだったら
余白をクリックすれば、何もしなくても勝手に false になります。
引用返信 編集キー/
■30058 / inTopicNo.7)  Re[5]: リストビュー
□投稿者/ .SHO (441回)-(2008/12/17(Wed) 17:13:24)
ですので、たぶん見た目のことだろうと思うのですが
残っているのは、選択状態ではなくリストビューのカーソルを示す
点線の枠だと思うのですが、これは常に何か1つは選択されているので
フォーカスをリストビュー以外に移動して消すしかないです。

ちなみに、余白のクリックは普通にMouseDownイベントで取得できます。
引用返信 編集キー/
■30060 / inTopicNo.8)  Re[6]: リストビュー
□投稿者/ カドルドエグ (66回)-(2008/12/17(Wed) 17:21:37)
No30058 (.SHO さん) に返信
> ちなみに、余白のクリックは普通にMouseDownイベントで取得できます。
恥ずかしながらそれは知りませんでした。。。
えらい面倒なことをしてしまった…
引用返信 編集キー/
■30077 / inTopicNo.9)  Re[1]: リストビュー
□投稿者/ まどか (594回)-(2008/12/17(Wed) 21:46:15)
No30038 (紅蓮 さん) に返信
> リストビューの任意の列をクリックした時、

列とは? ヘッダのこと?

> SelectedやFocusedをtrueにしてその列を選択状態にしているのですが、

この列がSubItemだとしたら、そもそも書かれたようなことはできないですが。
書かれたプロパティからは行が対象だと思うけど、逆に「列をクリックして行を選択」という考えられない仕様に。。。

> リストビューの余白(列のない場所)をクリックしたとき、選択状態を解除したいのですが、どうすればよいのでしょうか?

余白と言っても、ヘッダにもリストにもありますのでやり方が異なります。
引用返信 編集キー/


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

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -