2016-05-30 10 views
1

最終的な学校プロジェクトを終了しようとしています。私はのC#winformゲームを作成しています。私たちは他のものを使うことはできません。 私はそれがかなり混乱してしまったので私はここにコードを掲示されませんと私はあなたがこの情報で私にちょうど答えることができると思います。C#:KeyDownイベントがコントロールで機能しない

セットアップ:私は私のプログラムは次のように設定してしまった

。メインフォームと2つのユーザーコントロールです。私はゲーム中にメインフォーム内のそれらのコントロールを切り替えます。第1のものはMENUであり、第2のものはGUIであり、ピクチャボックスはgamesceneとして機能する。

問題:

セットアップは非常に重要な私は推測していません。しかし、私がする必要があること(それは形でアクティブである間最初のコントロールダウンいくつかのアクション時にI プレスキーを行うことです。私が最初に考えたのは簡単だが、onKeyDownイベントはmenu.cs(1st usercontrol)は何もしていない(イベントメソッドは空ではない)。私はthis.previewKey = trueを試しました。 メニューロードメソッドしかし、それはそれを認識しませんでした。 私の質問は: usercontrolsコードのonKeyDownを使用する方法はありますか?

私は2番目のコントロールに同じキーを使用すると、私はそれが

TLDR(明らかoposite ハァッでした)厄介取得したいdidntはbecouse私はこのようにそれをやった:を使用する必要がをonKeyDownメソッドのUserControl(KeyPreviewのキーであるかもしれない)

BONUS
私も何とか続きから変数をリンクする必要がで
イベントロールスロイス1をフォームとコントロール2に置き換えます。 「Form to Form」のようなin situacionが簡単になることがわかりましたが、userControlsなのでそれを理解することはできません。そして、私は仕上げからちょっとだけです

答えて

0

keypressイベントでは、選択したコントロールがメインフォームではないことを確認してください。どのキーが押されたかを判断するためにフォームをキャプチャしている場合は、そのキー入力イベントを使用します。メッセージボックスを使用して、適切な制御があることを確認できます。すべてのキーは整数値を持ち、eのプロパティを使用してアクセスして使用できます。

ボーナス。コードをどのように実装したかに応じて、グローバル変数を使用してフォーム間でデータを渡すか、代理人が積極的に別のフォームにアクセスしてコントロールを設定する必要があります。

+0

はどうもありがとうございました:)私はそれを行ってどのように明日とタイプ見てみましょう! –

+0

私はすぐに見て、私はそれらのコントロールにボタンがあるときにキーイベントが動作しないことに気づいた。あなたはどんな方法でも知っていますか?最後にクリックしたボタン(または最初のクリックがなかった場合は最初のボタン)が、入力、タブまたはスペースが押されるのを待っているキーボール入力を検出するような感じです。あなたが私にここに従うことができるかどうか分からない。私は深いプログラマーではない。あなたが私に答えることができればあなたの努力に感謝:) –

+0

コントロールをフォームに変更する – Shon

0

イベントをForm.Designerに登録する必要があります。CS:

private void InitializeComponent() 
{   
    // Your form properties here 

    this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown); 
} 

あなたはKeyDownイベントイベントはForm.csコードでこのように使用することができます:

private void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    // To know if your event is working and the value of the key who's pressed 
    MessageBox.Show("Key Pressed = " 
        + e.KeyCode.ToString() 
        + ", Value = " 
        + e.KeyValue.ToString()); 

    // Example - add some actions bellow 
    if (e.KeyValue == 13) 
     MessageBox.Show("Return Key Pressed"); 
} 
+0

私はデザイナーのイベントウィンドウを通してそれをやったので、それ自身が登録されると思った。大変ありがとうございます。私が家に帰ると、今日私は見ていきます。 –

+0

あなたがデザイナでそれをした場合は、イベントのレジスタ自体がうんざりです。 – Nayde

関連する問題