2011-12-24 7 views
0

C#でハングマンプログラムを作成しています。キーボードボタンを押すと、フォームのボタンをクリックします。これはどこに書きますか? form1.load()で?C#メソッドをトリガーするためのキーボードボタン

+0

私たちの答えがあなたの質問に答えることができないことが分かった場合は、さらに詳しい情報を入力して質問を編集してください。あなたの答えがすでにある場合は、そのような印をつけて正解を教えてください。ありがとう。 –

答えて

2

キーボードイベントへの応答としてコードを書き込む場合は、Form.Load()にコードを書き込まないでください。フォームが最初に読み込まれる(画面に表示される)ときに、そのイベントが発生します(内部のコードが実行されます)。

KeyPress eventを処理し、そのコードを代わりに書くのはどうですか?あなたのフォームにもそのイベントの1つがあります。

サンプルコード:

private void Form1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    Button1.PerformClick(); 
} 

PerformClick methodButton controlためClickイベントを生成します。あなたは扱うことができるという同様の方法でClickイベント:このイベント処理のものは、あなたに混乱し

private void Button1_Click(object sender, EventArgs e) 
{ 
    // do something in response to the button being clicked 
    // ... 

    MessageBox.Show("Button clicked!"); 
} 

場合は、C#と/または.NET Frameworkようにプログラミングに良い本をピックアップしていることを確認してくださいあなたはそれをうまく学ぶことができます。それは非常に重要で、スキップするものではありません!

0
private void Form_KeyDown(object sender, KeyEventArgs e) 
{ 
    if(e.KeyCode == Keys.Left) 
    { 
    // Do your hang job 
    Button_Click(sender, EventArgs.Empty); 
    } 
} 
0

あなたが興味のあるイベントに登録して後で処理する必要があります。しかし、それをやり遂げる方法を読んで勉強する必要がある前に。 C#では難しい問題ではありません。イベントをサブスクライブ

http://msdn.microsoft.com/en-us/library/ms171534.aspx

ある時は、ボタンをクリックしてからとKeyDownイベントから呼び出すことができる関数を作成します。

1

あなたは、あなたがフォーム上で直接KeyPressイベントを実装する必要があり、フォーム上のKeyPreviewプロパティを有効にする必要があります。

Form1.KeyPress +=new KeyPressEventHandler(Form1_KeyPress); 

private void Form1_KeyPress(object sender, KeyPressEventArgs e) { 
     if(e.KeyCode == someKey) { 
button1.performclick(); 
} 

} 
2

いいえ、あなたはイベントがしたいれているフォームを選択してくださいその後、プロパティペインに移動し、イベントタブを選択し、KeyPressイベントに移動し、ダブルクリックしてコードを追加します。

Normalyこのような何かがちょうど文場合は、より多くを追加することができ、あなたがコントロールしたいキーの押下を判断するためには、keyChar値をグーグル、あなたがやりたいことになります。

private void Form1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (e.KeyChar == (char)13) 
     { 
      Button1.PerformClick(); 
     } 

    //Other if statements if you want to keep an eye out for other keyPresses 
} 

[編集]私はちょうどあなたがかもしれない思い出しましたButton1.Textプロパティに&Button1というマークを付ける必要がある場合は、ショートカットを考慮する必要があります。この方法では、「B」に下線が引かれ、alt+Bのボタンクリックイベントを実行するショートカットを受け入れます。 &シンボルは、ショートカットに使用する文字の前に設定されています。さまざまなボタンに同じ文字を使用しないでください。

+1

フォームのプロパティKeyPreviewをtrueに設定することを忘れないでください。 こちらをご覧ください: http://msdn.microsoft.com/en-us/library/system.windows.forms.form.keypreview%28v=VS.100%29.aspx –

+0

@GorgiRankovski私は ' KeyPreview = false;そしてそれは働いた。私はあなたが言っていることを理解していますが、それは論理的ですが、私はあなたのために、なぜそれがうまくいっているのか、そのプロパティが偽であっても、あなたには正当性がありません。何か案は? –

+0

私の以前のコメントについて、私は何をテストしたか(空のフォーム)について考え、同じコントロールをいくつかのコントロールでテストしました。だから 'KeyPreview = false; 'を設定すると、KeyPressイベントを起動せずにコントロールとやりとりすることができるので、KeyPreviewプロパティをアクティブにする必要があります。しかし、 'KeyPreview = true;'はキーを押すたびにKeyPressイベントを発生させるので、アクションを起動するキー(sugegsted if文)を設定するか、キーボードのすべてのヒットがそれらのアクションを実行するか。それは意図されているかもしれませんが、ただあなたは何が起こるかを知っています。 –

関連する問題