Categories: Cシャープ

【C#入門】キーボード入力を取得する方法を徹底解説

C#でアプリケーションを作る際、ユーザーからの入力を受け取るには「キーボード入力の取得」が不可欠です。コンソールアプリケーションで文字を打ち込んでもらったり、ゲームアプリでキー操作に反応したり、GUIアプリでフォーム入力を扱ったりするなど、キーボード入力の扱いはプログラムの基本ともいえる要素です。

この記事では、C#でキーボード入力を取得する方法について、初心者でも理解しやすいようにわかりやすく解説していきます。コンソールアプリからWindowsフォーム、WPFアプリまで、それぞれのケースでどのように入力を処理するのかを具体的なコード例とともにご紹介します。


コンソールアプリケーションでのキーボード入力の取得方法

C#のコンソールアプリでは、Console.ReadLine()Console.ReadKey() を使ってユーザーの入力を取得できます。

Console.ReadLineの使い方

Console.WriteLine("名前を入力してください:");
string name = Console.ReadLine();
Console.WriteLine("こんにちは、" + name + "さん!");

このコードでは、ユーザーが Enter キーを押すまでの文字列を取得し、その後にメッセージを表示します。簡単な対話形式のプログラムに最適です。

Console.ReadKeyの使い方

一方、Console.ReadKey() は1文字だけ取得したいときに便利です。

Console.WriteLine("何かキーを押してください:");
ConsoleKeyInfo keyInfo = Console.ReadKey();
Console.WriteLine("\n押されたキー: " + keyInfo.Key);

ConsoleKeyInfo オブジェクトには、押されたキーに関する詳細情報(キーの種類、ShiftやAltなどの修飾キーの状態など)が含まれています。


Windowsフォームアプリでのキーボード入力の取得方法

GUIアプリケーションでキーボード入力を取得するには、Windowsフォームのイベントを利用します。

TextBoxコントロールからの入力

テキストボックスからユーザーが入力した内容を取得するのは非常に一般的です。

private void button1_Click(object sender, EventArgs e)
{
string inputText = textBox1.Text;
MessageBox.Show("入力内容: " + inputText);
}

このコードでは、ボタンをクリックした際に textBox1 に入力されたテキストを取得してメッセージ表示しています。

KeyDownイベントを使ってキーを取得

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
MessageBox.Show("押されたキー: " + e.KeyCode.ToString());
}

フォーム全体でキーイベントを検出したい場合は、フォームの KeyPreview プロパティを true に設定しておく必要があります。


WPFアプリケーションでのキーボード入力の取得方法

WPFアプリケーションでも、イベントベースでキーボード入力を検出できます。フォームやコントロールに対して KeyDown イベントを設定して使います。

private void Window_KeyDown(object sender, KeyEventArgs e)
{
MessageBox.Show("押されたキー: " + e.Key.ToString());
}

また、テキストボックスから入力内容を取得するのも簡単です。

string text = MyTextBox.Text;

WPFでは、XAMLとコードビハインドを連携させて直感的にUI操作ができるため、初心者にも扱いやすいのが魅力です。


特定のキーが押されたか判定する方法

キー入力で特定のキーを判定したいときには、条件分岐で処理を分けることができます。

if (e.Key == Key.Enter)
{
MessageBox.Show("Enterキーが押されました");
}

また、CtrlやShiftなどの修飾キーとの組み合わせも可能です。

if (Keyboard.IsKeyDown(Key.LeftCtrl) && e.Key == Key.C)
{
MessageBox.Show("Ctrl + C が押されました");
}

継続的にキーの状態を監視したい場合

リアルタイムでキー入力を監視したいときには、タイマーと Keyboard.IsKeyDown を組み合わせる方法もあります(特にWPFやゲーム開発時に有効です)。

if (Keyboard.IsKeyDown(Key.Left))
{
// 左キーが押されている間、キャラクターを移動するなど
}

この処理は、ゲームなどで「押し続けている間の動作」を実現するのに最適です。


キーコードと対応表の理解

C#では、キーは ConsoleKey, Keys, Key など、使用するアプリケーションの種類によって異なる列挙型で扱われます。対応表は公式ドキュメントや MSDN で確認できますが、実際の開発では IDE(Visual Studio)の補完機能を利用すると効率的です。


まとめ

C#でキーボード入力を取得する方法は、アプリケーションの種類(コンソール、Windowsフォーム、WPF)によって異なりますが、どれも基本的な仕組みを押さえればすぐに使えるようになります。

  • コンソールアプリでは ReadLineReadKey を使用
  • Windowsフォームでは TextBox や KeyDown イベント
  • WPFでは KeyDownKeyboard クラスで柔軟に対応可能

初心者の方でも、今回のサンプルコードを真似して実装してみることで、キーボード入力の基礎がしっかり身につくはずです。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。