C#でアプリケーションを作る際、ユーザーからの入力を受け取るには「キーボード入力の取得」が不可欠です。コンソールアプリケーションで文字を打ち込んでもらったり、ゲームアプリでキー操作に反応したり、GUIアプリでフォーム入力を扱ったりするなど、キーボード入力の扱いはプログラムの基本ともいえる要素です。
この記事では、C#でキーボード入力を取得する方法について、初心者でも理解しやすいようにわかりやすく解説していきます。コンソールアプリからWindowsフォーム、WPFアプリまで、それぞれのケースでどのように入力を処理するのかを具体的なコード例とともにご紹介します。
C#のコンソールアプリでは、Console.ReadLine()
や Console.ReadKey()
を使ってユーザーの入力を取得できます。
Console.WriteLine("名前を入力してください:");
string name = Console.ReadLine();
Console.WriteLine("こんにちは、" + name + "さん!");
このコードでは、ユーザーが Enter キーを押すまでの文字列を取得し、その後にメッセージを表示します。簡単な対話形式のプログラムに最適です。
一方、Console.ReadKey()
は1文字だけ取得したいときに便利です。
Console.WriteLine("何かキーを押してください:");
ConsoleKeyInfo keyInfo = Console.ReadKey();
Console.WriteLine("\n押されたキー: " + keyInfo.Key);
ConsoleKeyInfo
オブジェクトには、押されたキーに関する詳細情報(キーの種類、ShiftやAltなどの修飾キーの状態など)が含まれています。
GUIアプリケーションでキーボード入力を取得するには、Windowsフォームのイベントを利用します。
テキストボックスからユーザーが入力した内容を取得するのは非常に一般的です。
private void button1_Click(object sender, EventArgs e)
{
string inputText = textBox1.Text;
MessageBox.Show("入力内容: " + inputText);
}
このコードでは、ボタンをクリックした際に textBox1
に入力されたテキストを取得してメッセージ表示しています。
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
MessageBox.Show("押されたキー: " + e.KeyCode.ToString());
}
フォーム全体でキーイベントを検出したい場合は、フォームの KeyPreview
プロパティを true
に設定しておく必要があります。
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)によって異なりますが、どれも基本的な仕組みを押さえればすぐに使えるようになります。
ReadLine
や ReadKey
を使用KeyDown
と Keyboard
クラスで柔軟に対応可能初心者の方でも、今回のサンプルコードを真似して実装してみることで、キーボード入力の基礎がしっかり身につくはずです。