
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で質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) エクセルのマクロを教えてください。 1 2023/01/27 09:05
- Windows 10 エクスプローラで希望の場所が表示できない 2 2023/06/29 15:19
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- C言語・C++・C# プログラムの時、フローチャートはどうなりますか?図でお願いします。 int main(void) { 1 2022/10/01 22:45
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- その他(プログラミング・Web制作) pythonにおける単方向リストの実装について 4 2022/07/13 12:34
- フリーソフト 1秒毎にキーの←を押すソフト 1 2023/03/06 04:27
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
C#のインクリメント演算子のオ...
-
Java 他クラスの呼び出しが上手...
-
C# MouseHoverを何度も呼ぶには
-
サブクラスからメインメソッド...
-
recursion
-
ボタンの複数割り当てについて
-
動くようにプログラムしてください
-
LiveConnectってIEではだめなの?
-
パスがとおらない・・・
-
C#でのWNetAddConnection3の使...
-
データの受け渡しについて
-
リストボックスの選択項目をさ...
-
C言語のポインターに関する警告
-
動的配列が存在(要素が有る)か...
-
System.err. printlnとSystem.o...
-
(漢和辞典)部首の配列法は?
-
javaの掲示板について
-
偶数ビットだけと奇数ビットだ...
-
オブジェクトの中のプロパティ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
C#で、あるクラスのメンバーす...
-
C# visibleプロパティをfalseに...
-
C#でのWNetAddConnection3の使...
-
C# DataGridView列カスタマイズ
-
C# MouseHoverを何度も呼ぶには
-
C#でキーイベントが発生しない...
-
Junitテストでvoid戻り値メッソ...
-
C# WinForm のDataGridView Cel...
-
ボタンの複数割り当てについて
-
ユーザーコントロールを動的に...
-
ボタンのイベントで異なるウィ...
-
LVM_SETITEMSTATEでListViewの...
-
c# スレッド間でのデータの共有
-
C#,listBoxのItem追加について...
-
unityでのC++エラーの原因がわ...
-
C# 矢印キーの取得
-
JavaFXでの表内のチェックボッ...
-
C# 半角カナの文字化けについて
-
C#で別のFormへ複数の値を返そ...
おすすめ情報