WinForms と C# を使用して Windows アプリケーションを構築しようとしています。フォームの 1 つで、ユーザーが各動き (つまり、左、右、上、下の動きなど) にキーを割り当てることができるようにします。それは似たようなものです
左側の列に動きがリストされ、ユーザーはすべての動きにキーを割り当てることができるはずです。私はWindowsフォームに非常に慣れていないため、左側のものに使用するコントロールを理解できません.KeyDownイベントでボタンを使用しようとしましたが、このイベントではEnter/Returnキー、残りのキーではトリガーされませんそれは正常に動作します。したがって、ユーザーが任意のモーション/コントロールに任意のキーを割り当てることができるように、どのイベントと共にどのコントロールを使用する必要がありますか。
編集:これは初期コードでした。
namespace ControllerWinServe
{
public partial class Form2 : Form
{
static string[] array = new string[6];
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
}
private void button_d_Click(object sender, EventArgs e)
{
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
}
private void button_u_KeyDown(object sender, KeyEventArgs e)
{
MessageBox.Show("Form.KeyPress: '" + e.KeyCode.ToString() + "' pressed.");
}
private void button_d_KeyDown(object sender, KeyEventArgs e)
{
MessageBox.Show("Form.KeyPress: b2 '" +e.KeyCode.ToString() + "'pressed.");
}
}
}
後 user17753 の提案を使用しようとしています。
namespace ControllerWinServe
{
public class EnterTextBox : TextBox
{
protected override bool IsInputKey(Keys key)
{
if (key == Keys.Enter)
return true;
return base.IsInputKey(key);
}
}
public partial class Form2 : Form
{
static string[] array = new string[6];
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
}
private void button_d_Click(object sender, EventArgs e)
{
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
}
private void button_u_KeyDown(object sender, KeyEventArgs e)
{
MessageBox.Show("Form.KeyPress: '" + e.KeyCode.ToString() + "' pressed.");
}
private void button_d_KeyDown(object sender, KeyEventArgs e)
{
MessageBox.Show("Form.KeyPress: b2 '" +e.KeyCode.ToString() + "'pressed.");
}
}
}