DOBON.NET DOBON.NETプログラミング掲示板過去ログ

フォームのファンクションキー押下について

環境/言語:[環境(WinXpPro) 使用言語(.NET VS 2010 Express) .NET Framework V4.0]
分類:[.NET]

初めまして Delphi-->.NET VB のサンプルプログラムを作成しているものです。
ご教示下さい。
(1)現在 ボタン(CMD_F5)をマウスでクリック --> 処理実行
 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
(2)キーボードのF5を押す --> 処理実行
 
どなたか、 (2) のプログラムの書き方を教えて頂けませんでしょうか
宜しくお願いします。
■No27567に返信(AN2546さんの記事)
> (1)現在 ボタン(CMD_F5)をマウスでクリック --> 処理実行
>  ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
> (2)キーボードのF5を押す --> 処理実行
Form の KeyDown イベントで引数 e を見て、押されたのが「F5」だったら、
「CMD_F5 ボタンの PerformClick メソッドを呼び出す」か、
「ボタン押下時に行われていた処理を呼び出す」ようにしてみてください。

たとえば、こんな感じのコードで。

'--- VB ---
Private Sub Foo()
    MessageBox.Show("押された")
End Sub

Private Sub CMD_F5_Click(ByVal sender As Object, e As System.EventArgs) Handles CMD_F5.Click
    Foo()
End Sub

Private Sub Form1_Load(ByVal sender As Object, e As System.EventArgs) Handles Me.Load
    KeyPreview = True
End Sub

Private Sub Form1_KeyDown(ByVal sender As Object, e As System.KeyEventArgs) Handles Me.KeyDown
    If e.KeyCode = Keys.F5 Then
        'CMD_F5.PerformClick()
        Foo()
    End If
End Sub


// --- Delphi ---
procedure Form1.Foo;
begin
    MessageBox.Show('押された');
end;

procedure Form1.CMD_F5_Click(sender: System.Object; e: System.EventArgs);
begin
    self.Foo
end;

procedure Form1.Form1_Load(sender: System.Object; e: System.EventArgs);
begin
    inherited KeyPreview := true;
end;

procedure Form1.Form1_KeyDown(sender: System.Object; e: System.KeyEventArgs);
begin
    if (e.KeyCode = Keys.F5) then
    begin
        // self.CMD_F5.PerformClick;
        self.Foo;
    end;
end;
〔魔界の仮面弁士様〕、ありがとうございます。
さっそく、サンプルプログラムを参考にしてコード追加しました。
動作確認OKでした。
また、Delphiのサンプルも記入頂きありがとうございます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板