キーを押さなかったことにするには?

解決


kaku  2003-08-20 01:45:00  No: 108167

こんにちは。

コンボボックスのKeyDownイベントで、キーを
押さなかったことにするにはどのような方法があるのでしょうか?

コンボボックス内の項目を選択した後、
Enterキーで別のテキストボックスにフォーカスを移そうとしているのですが、
フォーカスが移った時にビープが鳴ってしまいます。
このビープを消すには、キーを押さなかったことにし、フォーカスだけ
移せばいいと思ったのですが、方法を見つけることができません。

どなたかご教授ください。


クリリン  2003-08-20 02:44:31  No: 108168

>別のテキストボックスにフォーカスを移そうとしているのですが、フォーカスが移った時にビープが鳴ってしまいます。
これについては、APIを使用するしか方法がありません。
「SystemParametersInfo」を調べて見てください。

>KeyDownイベントで、キーを押さなかったことにする
.NETであれば、「e.Handled = True」でイベントのキャンセルができます。


Take1  2003-08-20 02:51:55  No: 108169

同じ条件で試した事がないのですがKeyDownプロシージャの
中で試してみてください。

If KeyCode = vbEnter Then
      KeyCode = 0
End If


kaku  2003-08-20 03:05:13  No: 108170

レスありがとうございます。

>クリリンさん
なるほど、e.Handled = Trueは記述していたのですが、
イベントのキャンセルとは違うところからなっているようですね。

>Take1さん
すいません、私の記述漏れでバージョンは.Netなのです。
KeyCode = 0は真っ先に思いつき記述したのですが、
.NetはKeyCodeは読み取り専用のようです。

お二人、ありがとうございました。


クリリン  2003-08-20 03:14:17  No: 108171

参考までに・・・

' システムに関するパラメータを取得/設定するAPI関数
<DllImport("user32")> Private Function SystemParametersInfo( _
    ByVal uAction As UInt32, _
    ByVal uParam As UInt32, _
    <MarshalAs(UnmanagedType.LPStr)> ByVal lpvParam As String, _
    ByVal fuWinIni As UInt32) As Boolean
End Function
' SystemParametersInfoの呼び出し時に使用する定数
Private SPI_SETBEEP As UInt32 = Convert.ToUInt32(2)     '警告ビープ音を設定

'Beep音を鳴らさないようにする
Call SystemParametersInfo(SPI_SETBEEP, Convert.ToUInt32(0), Nothing, Convert.ToUInt32(0))


魔界の仮面弁士  2003-08-20 08:47:46  No: 108172

ComboBox(あるいはForm)のPreProcessMessageをオーバライドしてみてください。

Public Overrides Function PreProcessMessage(ByRef msg As System.Windows.Forms.Message) As Boolean
    Const WM_KEYDOWN As Integer = &H100

    If msg.Msg = WM_KEYDOWN AndAlso (msg.WParam.ToInt32() And Keys.KeyCode) = Keys.Enter Then
        'ここに、Enterキーが押された時の処理を記述。 
        '例えば、『RaiseEvent PressEnter()』みたいにして
        '独自のイベントを発生させてみても良いかも。
        Return True
    Else
        Return False
    End If
End Function


kaku  2003-08-20 18:44:11  No: 108173

おぉ、サンプルが・・・ありがとうございます。

で・・・日が浅いものでわからないのですが、
クリリンさん、魔界の仮面弁士さんのソースは
どこに記述したらよいのですか?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加