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

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

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

TrackBarの矢印キーを無効化する

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

■92768 / inTopicNo.1)  TrackBarの矢印キーを無効化する
  
□投稿者/ えぷ (1回)-(2019/10/29(Tue) 11:46:31)

分類:[.NET 全般] 

VBを使っています。

デフォルトではTrackBarにフォーカスを合わせた状態で、
矢印キーを押すとカーソルを移動させることができます。

これの挙動を、例えばシフトキーを押しながらだと
5目盛りずつ前後するとかに変更したいのですが、

TrackbarのKeyDownメソッドにこれを書くと、
元からある動作は消えずに残るために、
1目盛り進むつもりが2目盛り進んでしまいます。

そのため、元からあるTrackBarの矢印キーを押した時の動作を無効化したいのですが
どのようにすれば良いですか?


Protected Overrides Function ProcessDialogKey(ByVal keyData As Keys) As Boolean

If ArrowKeyMovement(keyData And Keys.KeyCode) = True Then
Return True
Else
Return MyBase.ProcessDialogKey(keyData)
End If

End Function

これでできるかと思ったのですが
うまくいきませんでした。

引用返信 編集キー/
■92771 / inTopicNo.2)  Re[1]: TrackBarの矢印キーを無効化する
□投稿者/ Hongliang (910回)-(2019/10/29(Tue) 12:15:59)
TrackBarから派生するカスタムコントロールを作って、
ProgressCmdKeyをオーバーライドし、
入力されたカーソルキーであれば(値の変更処理を行ったうえで)Trueを返す、
というのがいいのではないでしょうか。
引用返信 編集キー/
■92772 / inTopicNo.3)  Re[1]: TrackBarの矢印キーを無効化する
□投稿者/ KOZ (27回)-(2019/10/29(Tue) 12:25:20)
No92768 (えぷ さん) に返信
> TrackbarのKeyDownメソッドにこれを書くと、
> 元からある動作は消えずに残るために、

KeyDown イベントで e.Handled = True とすると、元の動作が取り消されるはずです。

例)
Private Sub TrackBar1_KeyDown(sender As Object, e As KeyEventArgs) Handles TrackBar1.KeyDown
     If e.KeyCode = Keys.Right Then
         e.Handled = True
     End If
End Sub

引用返信 編集キー/
■92773 / inTopicNo.4)  Re[2]: TrackBarの矢印キーを無効化する
□投稿者/ えぷ (2回)-(2019/10/29(Tue) 12:25:39)
できればカスタムコントロールを使わない方法が良いのですが
ご存じないでしょうか?

もしカスタムコントロールしか方法がないのであれば
コードをご提示いただけないでしょうか?

引用返信 編集キー/
■92774 / inTopicNo.5)  Re[3]: TrackBarの矢印キーを無効化する
□投稿者/ えぷ (3回)-(2019/10/29(Tue) 12:28:57)
KOZさん
ありがとうございます。

e.Handled = True

も試してみましたが、
なぜかTrakcBarの場合には無効化することができませんでした。

あとSmallChangeの値で矢印キーを押した時の増減量を設定できるはずなので
これを0にしてみたのですが
それでも無効化することができませんでした。

他に方法がありましたらお願いいたします。

引用返信 編集キー/
■92778 / inTopicNo.6)  Re[4]: TrackBarの矢印キーを無効化する
□投稿者/ えぷ (5回)-(2019/10/29(Tue) 18:23:16)
すいません、

Handles TrackBar1.KeyDown

が二つあることが原因でした。

解決しました

解決済み
引用返信 編集キー/

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


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

このトピックに書きこむ