
C#で矢印キーが押されたとき、値を増減するといった単純なプログラムを書きたいです。
画面上のテキストボックスのkeyDown イベントの処理部で処理すればよいことはわかりますが、
押されたキーイベント KeyEventArgs e からどうやって矢印キーであるかの判断をする部分のプログラムが書けません
気持としては以下の通りです。正しいコードに修正したいです。
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if(e.key == '↑') n++;
else if (e.key == '↓') n--;
else if (e.key == '0') n=0;
}
No.2ベストアンサー
- 回答日時:
WPFでしたか。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private int n = 0;
private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.Up:
n++;
break;
case Key.Down:
n--;
break;
case Key.D0:
case Key.NumPad0:
n = 0;
break;
}
// キー入力を無効にしたいなら
e.Handled = true;
Console.WriteLine(n.ToString());
}
}
回答ありがとうございます。動きました!
WPFでは、
e.KeyData Keys.Down
の代わりに
e.key key.Down
なのですね。
なんで変えたのかしら? ややこしいですね。
ありがとうございました。
No.1
- 回答日時:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private int n = 0;
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyData)
{
case Keys.Up:
n++;
break;
case Keys.Down:
n--;
break;
case Keys.D0:
case Keys.NumPad0:
n = 0;
break;
}
Console.WriteLine(n.ToString());
}
}
Shift, Ctrlとかが押されていても反応しません。
それらが押されていても関係なく反応してほしいなら、e.KeyCodeで判断します。
回答ありがとうございます。
早速、試してみましたが、
e.Key
e.KeyboardDevice
e.KeyStates
はありますが、
e.KeyData は無い
と怒られてしまいました。
さらに、あるという3種類いずれでもエラーが出て動きませんでした。
環境は、
Win8/64, VS2010 C#, WPFアプリケーション
です。
引き続き、回答お待ちしています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#で、あるクラスのメンバーす...
-
決められて時間が経過するとア...
-
C# 親フォームで指定した値を...
-
C# DataGridView列カスタマイズ
-
Junitテストでvoid戻り値メッソ...
-
C#から、C++で作成したdll内の...
-
C# 矢印キーの取得
-
JSPファイルから、ActionFormの...
-
C#でのWNetAddConnection3の使...
-
オブジェクトの中のプロパティ...
-
ORA-01858: 数値を指定する箇所...
-
System.err. printlnとSystem.o...
-
IF関数でEmpty値を設定する方法。
-
C言語のポインターに関する警告
-
動的配列が存在(要素が有る)か...
-
C言語 重複しない4ケタの乱数...
-
JSPでの計算結果表示
-
1~100までの数字を表示したい
-
hiddenの値が期待した値で取得...
-
JSPやサーブレットでSystem.out...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
C#で、あるクラスのメンバーす...
-
ボタンの複数割り当てについて
-
コンボボックスを使う時の警告
-
C# DataGridView列カスタマイズ
-
Junitテストでvoid戻り値メッソ...
-
C# 矢印キーの取得
-
C# WinForm のDataGridView Cel...
-
C#でのWNetAddConnection3の使...
-
C# visibleプロパティをfalseに...
-
GOF本のStrategyのJava版での質...
-
イメージボタンを作成したいの...
-
以下のコードのどこが問題なの...
-
Androidでこのエラーを解決した...
-
C#で、定数をフラグ(if文)に...
-
C# 親フォームで指定した値を...
-
Javaでウィンドウ作成について
-
負の数を取得するには?
-
Windowsのリソース作成について
-
javaの同期について
おすすめ情報