0

これが以前に尋ねられたことがあると誰かが言う前に、私は今日 2 時間かけて Google でさまざまな表現を試して答えを見つけようとしましたが、探していたものは何もありませんでした. 私が見つけたものの大半は、「CTRL + A」のようなキーの組み合わせを使用して対処していましたが、それは私がここで行おうとしているものではありません.

私は、ピアノを見て演奏するアプリケーションの作成を任されました。これまでのところ、ボタン (ピアノのキー) をクリックすると、その特定の周波数が再生されるように設定しました ( Beep「Kernel32」ライブラリの関数を使用しますか?)。

今、私ができるようにしたいのは、A、D、および G のようなキーを押し、同時に和音を演奏することです。これは、C、E、および G の音に変換されます。

私がやろうとしたことは、すべてをKeyPressサブの下に置くことでした。

Sub frmForm1_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles Me.KeyPress
        If Keys.A Then
            C_KeyPress()
        End If

        If Keys.S Then
            D_KeyPress()
        End If
    End Sub

しかし、A (またはこの場合は S キー) をIf押すと、A キーだけを押したにもかかわらず、両方のステートメントが実行されます。そのキーに割り当てた特定の音符だけを再生するようにする方法がわかりません。

(これが別の質問に入る必要があるかどうかはわかりませんが、コードを作成できるように、一度に3つの<=キーを処理するにはどうすればよいですか?)

4

2 に答える 2

1

Keys.<something>実際のキー押下データと比較するのではなく、値をテストしています。KeyPress押された文字を与えるだけですが、それを使って何らかのロジックを実行できます。例えば:

If Char.ToLower(e.KeyChar) = Char.ToLower(ChrW(Keys.A)) Then
    C_KeyPress()
End If
于 2013-09-23T18:34:23.887 に答える