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# 半角カナの文字化けについて
-
ボタンのイベントで異なるウィ...
-
Junitテストでvoid戻り値メッソ...
-
C# visibleプロパティをfalseに...
-
swt の Spinner クラスについ...
-
C#でのWNetAddConnection3の使...
-
ボタンの複数割り当てについて
-
javaアプレット repaintのタイ...
-
C# WinForm のDataGridView Cel...
-
大量のデータを読み込んで表示...
-
Processingでマウスクリックで...
-
C#で、あるクラスのメンバーす...
-
テキストフィールドに入力した...
-
C言語のポインターに関する警告
-
ループ処理の際、最後だけ","を...
-
パソコンキーボードで時分秒を...
-
BOOL値を逆にしたい
-
ダブルクォーテーションのrepla...
-
yyyymmddからyyyy/mm/d...
-
<s:iterator>の値をリストで取...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#で、あるクラスのメンバーす...
-
大量のデータを読み込んで表示...
-
Junitテストでvoid戻り値メッソ...
-
Processingでマウスクリックで...
-
C#でのWNetAddConnection3の使...
-
ボタンのイベントで異なるウィ...
-
C#で別のFormへ複数の値を返そ...
-
GetDIBits関数の使い方について
-
【Java】画像表示が出来ない!
-
ボタンの複数割り当てについて
-
Thread.sleepのInterruptedExce...
-
C# MouseHoverを何度も呼ぶには
-
C# DataGridView列カスタマイズ
-
正規表現
-
unityでのC++エラーの原因がわ...
-
C# visibleプロパティをfalseに...
-
C# 矢印キーの取得
-
C#から、C++で作成したdll内の...
-
C#でキーイベントが発生しない...
-
JavaFXでの表内のチェックボッ...
おすすめ情報