- - PR -
スクロールバーを掴んだ時のイベントについて
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-05-02 00:20
C#でListViewもしくはDataGrideViewで
Timerを使用してデータを追加し自動スクロール するプログラムを作成しています。 ユーザがスクロールバーを掴んだ時には、 Timerを止めてスクロールできるようし、 逆にスクロールバーを離した時にはTimerを再開する ようにしたいと思っています。 マウスでスクロールバーを掴んだ時と離した時のイベントを 探したのですが見つかりませんでした。 スクロールバーを掴んだ時と離した時のイベントを取得 する方法を教えてください。 | ||||||||
|
投稿日時: 2008-05-02 08:55
未確認だけど、MouseDownとMouseUpってのはどう?
| ||||||||
|
投稿日時: 2008-05-02 10:21
スクロールバー側で掴んだときと離したときのイベントを
拾うのではなく、タイマー側でスクロールバーの Capture プロパティをチェックして、Capture プロパティが true の ときはマウスが押されていると判断してみるのはどうでしょ うか。 スクロールバーにフォーカスを当ててキーでスクロール させた場合はどうなのとか、スクロールバーをクリックして スクロールさせたときはどーすんの?とかありますが、とり あえずはこれでいけると思います。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||
|
投稿日時: 2008-05-02 14:11
かずくん、ぽぴ王子 返答ありがとうございます。
>かずくん >未確認だけど、MouseDownとMouseUpってのはどう? ListViewとDataGrideViewで MouseDownとMouseUPではスクロールバーをクリックしても イベントは発生しませんでした。 おそらく、スクロールバーはListViewやDataGrideViewの コントロール外に見えます。Formでもダメでした。 >ぽぴ王子 >スクロールバーの Captureプロパティをチェック こちらを試してみたいのですが、 どの様にすればDataGrideViewやListViewの スクロールバーを取得できるのかわかりませんでした。 スクロールバーを無効にして、 VScrollBarを作成して、Controll.Addするような 方法でしょうか? | ||||||||
|
投稿日時: 2008-05-02 14:37
ListViewは分かりませんが、DataGridViewであれば、Controlsプロパティの中にScrollBarオブジェクトが含まれていると思います。 クイックウォッチで覗くとすぐ分かるかも。 # ただ、ぽぴ王子さんの持つ懸念は私も持っています。 # 付け加えるとマウスホイールによるスクロールとか。 | ||||||||
|
投稿日時: 2008-05-02 14:40
うわーごめんなさい。 DataGridView だということをすっかり忘れていて 普通のスクロールバーをフォームに配置してチェック してました。 ちょっと調べてみましたが、DataGridView.Controls に HScrollBar と VScrollBar が存在するようで その中から VScrollBar を取得して Capture を見れば 無理矢理ですがなんとかできそうな感じです。 テスト用にこんな感じのコードを書いてみました。
# しまった、rain さんに先を越された(早食い競争じゃありません) _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||
|
投稿日時: 2008-05-02 14:44
DataGridView に関しては VerticalScrollBar プロパティがありますので、
これを使う手もありそうです。 Protected なので継承する必要があると思いますが。 ListView に関しては調べてみた感じでは何もなさそうです。 | ||||||||
|
投稿日時: 2008-05-07 01:40
返信ありがとうございます。
ぽぴ王子さんのやり方で問題無くできました。 ありがとうございます。 皆さんのご指摘の通り、キー操作やホイール操作での 問題がありますが、勉強用途で作成しているので 今回は見送ります・・。 テッテさんの通り、ListViewについては 該当するプロパティなどが無く、 スクロールを取得することができませんでした。 ListViewでのスクロールを取得する方法はありますでしょうか? |