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

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

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

コンボボックスで矢印キーだけ無効化する方法

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

■88461 / inTopicNo.1)  コンボボックスで矢印キーだけ無効化する方法
  
□投稿者/ 魚魚 (1回)-(2018/09/02(Sun) 19:54:56)

分類:[.NET 全般] 

コンボボックスで矢印キーを無効化したいのですが

https://dobon.net/vb/dotnet/control/cbignoredownkey.html

Private Sub ComboBox1_KeyDown(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyEventArgs) _
    Handles ComboBox1.KeyDown
    If e.KeyCode = Keys.Down Or e.KeyCode = Keys.Up Then
        e.Handled = True
    End If
End Sub

という方法を使うと、同時にホイールによる操作も無効化されてしまいます。

一体、どうすればホイールキーの操作はそのままで矢印キーだけ無効化することができますか?

引用返信 編集キー/
■88464 / inTopicNo.2)  Re[1]: コンボボックスで矢印キーだけ無効化する方法
□投稿者/ Hongliang (685回)-(2018/09/02(Sun) 20:47:46)
ComboBoxのMouseWheelイベントで、SelectedIndexを手動で変更するのはどうでしょう。

ところで個人的な疑問なのですが、何故カーソルキーでの操作をそんなに忌避するんでしょうか…。
// 先ほどもカーソルキー操作を無効化したいという質問を見かけたので。
引用返信 編集キー/
■88465 / inTopicNo.3)  Re[2]: コンボボックスで矢印キーだけ無効化する方法
□投稿者/ 魚魚 (2回)-(2018/09/02(Sun) 21:17:18)
ありがとうございます。

実は、矢印キーに別の機能を割り当てているのですが、
コンボボックスやテキストボックスとかにフォーカスが合った状態で操作すると
その機能と同時にこれらのボックスの機能も動作してしまうため、
これらのボックスの機能を停止させたいと考えています。

テキストボックスに関してはうまくいったのですが
コンボボックスだけがうまくいっていません。

以下のようにしてみたのですが、
やはりホイールを動かした時に
KeyDownの方も同時に動作してしまいます。

どのようにすれば良いでしょうか?


    Private Sub ComboBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ComboBox5.KeyDown

        Select Case e.KeyCode
            Case Keys.Up
                'コード
                e.Handled = True
            Case Keys.Left
                'コード
                e.Handled = True
            Case Keys.Right
                'コード
                e.Handled = True
            Case Keys.Down
                'コード
                e.Handled = True
        End Select
    End Sub


    Private Sub ComboBox5_MouseWheel(ByVal sender As Object, ByVal e As MouseEventArgs) Handles ComboBox5.MouseWheel

        Dim CMB = CType(sender, ComboBox)

        If e.Delta < 0 AndAlso CMB.Items.Count() - 1 > CMB.SelectedIndex Then

            CMB.SelectedIndex += 1

        ElseIf e.Delta > 0 AndAlso CMB.SelectedIndex > 0 Then

            CMB.SelectedIndex -= 1

        End If

    End Sub


引用返信 編集キー/
■88466 / inTopicNo.4)  Re[3]: コンボボックスで矢印キーだけ無効化する方法
□投稿者/ Hongliang (686回)-(2018/09/02(Sun) 21:37:00)
MouseWheelイベントで、
CType(e, HandledMouseEventArgs).Handled = True
ってやってやればどうですかね?
引用返信 編集キー/
■88469 / inTopicNo.5)  Re[4]: コンボボックスで矢印キーだけ無効化する方法
□投稿者/ 魚魚 (4回)-(2018/09/02(Sun) 22:33:35)
見事にうまくいきました。
ありがとうございます。

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

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


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

このトピックに書きこむ