キーボードのキーの状態を取得する (Microsoft.Xna.Framework.Input.KeyboardStateを用いたキーの状態の取得) - C#

Microsoft.Xna.Framework.Input.KeyboardStateを用いてキーの状態を取得します。(System.Windows.Input.Keyboardを用いたキー状態の取得はこちら)

準備

XNAのアセンブリを参照するためにはXNA Framework (Microsoft XNA Game Studio 4.0)をインストールする必要があります。Microsoft XNA Game Studio 4.0はWindows Phone SDK 7.1に含まれているため、これをダウンロードし、インストールします。

参照の追加

Winformアプリケーションを新規作成します。


ソリューションエクスプローラの[参照設定]ノードを右クリックしポップアップメニューを表示します。ポップアップメニューの[参照の追加]メニューを選択します。


[参照の追加]ダイアログでMicrosoft.Xna.Framework.dllを選択します。


[参照設定]ノードに"Microsoft.Xna.Framework"が追加されます。


コード

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Xna.Framework.Input;

using Keys = Microsoft.Xna.Framework.Input.Keys;

namespace WindowsFormsApplication1
{
  public partial class Form1 : Form
  {

    public Form1()
    {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
      Application.Idle += new EventHandler(Application_Idle);
    }

    private void Application_Idle(object sender, EventArgs e)
    {

      KeyboardState newstate = Keyboard.GetState();
      if (newstate.IsKeyDown(Keys.Left) == true) {
        label1.Text = "左キーが押されています。";
      }
      else {
        label1.Text = "なし";
      }

      if (newstate.IsKeyDown(Keys.Right) == true) {
        label2.Text = "右キーが押されています。";
      }
      else {
        label2.Text = "なし";
      }
    }
  }
}

UI

下図のUIを準備します。フォームにラベルを2つ配置します。

実行結果

アプリケーションを実行します。


左キーを押します。Label1にキーが押された旨のメッセージが表示されます。


左キーを離します。Label1のメッセージが"なし"に変わります。右キーを押します、Label2にキーが押された旨ののメッセージが表示されます。


右キーと左キーを同時に押します。Label1,Label2ともにキーが押された旨のメッセージが表示されます。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-01-06
作成日: 2012-02-11
iPentec all rights reserverd.