こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

キー入力が反応しません。

VisualStudio2005のC#になります。
ボタンを押す
ラベルに文章
ボタン消える
Enterキー押す
ラベルの文章が変わる
という処理を行いたいのですが、”Enterキー押す”以下が実行されません。なぜなのでしょうか?どうすれば実行されるのでしょう。


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace 消す
{
public partial class Form1 : Form
{
private bool EnterKeyDown;
public Form1()
{
InitializeComponent();
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (EnterKeyDown == false)
{
EnterKeyDown = true;
label1.Text = "押したよ";
}
else
{
EnterKeyDown = false;
label1.Text = "押したよ2";
}
}
private void button1_Click(object sender, EventArgs e)
{
button1.Visible = false;
}
}
}

投稿日時 - 2007-01-21 19:47:51

QNo.2684620

すぐに回答ほしいです

質問者が選んだベストアンサー

自分もまだC#を勉強し始めて間もないのですが、参考程度にしてください。

もしかしたら InitializeComponentメソッドで実行されているthis.KeyDown += new KeyEventHandler(this.Form1_KeyDown);
とかいうのが抜けているのではないでしょうか?
KeyDownイベントにForm1_KeyDownメソッドが登録されていないのでキーを押しても実行されないとか?

またはフォーカスがボタンにいっててフォームのKeyDownが実行されていないとか?

関係ないのですが。
明示するために、EnterKeyDownですがコンストラクタなどでfalseに初期化したほうがいいと思います。
Form1_KeyDownメソッドが拡張したときのためにどのキーが押されたかを判定したほうがいいと思います。これならどのキーを押しても実行されてしまいます。
if (e.KeyCode == Keys.Enter)などで判定できます

投稿日時 - 2007-01-22 10:57:13

お礼

お礼だが遅くなり申し訳ありません、
大変に参考になりました!
ありがとうございました!

投稿日時 - 2007-02-19 06:45:19

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問