C# 为游戏创建控件赋值器菜单
我正在尝试使用WinForms和C#构建一个windows应用程序,其中一种形式是我希望用户能够为每个运动(即左、右、上、下运动等)分配键。这与 在左侧列中,将列出移动,用户应该能够为每个移动分配一个键。我对windows窗体非常陌生,无法确定左手边的东西使用什么控件,我尝试使用带有KeyDown事件的按钮,但在这种情况下,事件不会触发enter/return键,对于其余的键,它工作正常。那么,应该使用什么控件以及什么事件,以便用户可以为任何运动/控件指定他选择的任何键 编辑:这是初始代码C# 为游戏创建控件赋值器菜单,c#,winforms,C#,Winforms,我正在尝试使用WinForms和C#构建一个windows应用程序,其中一种形式是我希望用户能够为每个运动(即左、右、上、下运动等)分配键。这与 在左侧列中,将列出移动,用户应该能够为每个移动分配一个键。我对windows窗体非常陌生,无法确定左手边的东西使用什么控件,我尝试使用带有KeyDown事件的按钮,但在这种情况下,事件不会触发enter/return键,对于其余的键,它工作正常。那么,应该使用什么控件以及什么事件,以便用户可以为任何运动/控件指定他选择的任何键 编辑:这是初始代码 n
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.");
}
}
}
如果要在
文本框中按enter键,默认情况下不会触发。您可以创建一个名为EnterTextBox
的新文件,该文件源于TextBox
,它覆盖IsInputKey
,以允许enter触发事件
其中一种执行方式可以是:
public class EnterTextBox : TextBox
{
protected override bool IsInputKey(Keys key)
{
if (key == Keys.Enter)
return true;
return base.IsInputKey(key);
}
}
在项目名称空间中使用此类,您可以从项目名称空间类别下的工具箱中添加EnterTextBox
然后,您可以添加由EnterTextBox
上的KeyDown
事件触发的方法,例如:
private void button1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
e.Handled = true;
//stuff to do after enter is pressed
}
}
如果要在文本框中按enter键,默认情况下不会触发。您可以创建一个名为EnterTextBox
的新文件,该文件源于TextBox
,它覆盖IsInputKey
,以允许enter触发事件
其中一种执行方式可以是:
public class EnterTextBox : TextBox
{
protected override bool IsInputKey(Keys key)
{
if (key == Keys.Enter)
return true;
return base.IsInputKey(key);
}
}
在项目名称空间中使用此类,您可以从项目名称空间类别下的工具箱中添加EnterTextBox
然后,您可以添加由EnterTextBox
上的KeyDown
事件触发的方法,例如:
private void button1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
e.Handled = true;
//stuff to do after enter is pressed
}
}
我尝试使用您提供的代码,但在使用该代码后,designer视图就会关闭,我无法使用拖放方法添加任何工具。你能看一下密码吗。谢谢你的回答。我尝试过使用你提供的代码,但是在使用代码之后,designer视图就会关闭,我无法使用拖放方法添加任何工具。你能看一下密码吗。谢谢你的回答。