C#如何接收键盘的上下左右按键?

2025-03-04 21:32:51
推荐回答(5个)
回答1:

一般来说,我们一个控件都会有三个事件,分别是
KeyDown,KeyPress和KeyUp
其中,KeyDown对应(键盘或者鼠标)按下
而KeyUp则对应松开,或者说弹起来。
而KeyPress则在你按下并松开按键的时候,会先后触发KeyDown事件和KeyUp事件
例如KeyDown我需要响应键盘的“上”
private void txtRemark_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Up)
{
//codes what you want
}
}

回答2:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class enterevent : Form
{
public enterevent()
{
InitializeComponent();
}

private void t1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
{
t4.Focus();
}
else if (e.KeyValue == 40)
{
t4.Focus();
}
else if (e.KeyValue == 39)
{
t2.Focus();
}
else if (e.KeyValue == 38)
{
t7.Focus();
}
else if (e.KeyValue==37)
{
t9.Focus();
}
}

private void t2_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
{
t4.Focus();
}
else if (e.KeyValue == 40)
{
t5.Focus();
}
else if (e.KeyValue == 39)
{
t3.Focus();
}
else if (e.KeyValue == 38)
{
t8.Focus();
}
else if (e.KeyValue == 37)
{
t1.Focus();
}

}

private void t3_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
{
t4.Focus();
}
else if (e.KeyValue == 40)
{
t6.Focus();
}
else if (e.KeyValue == 39)
{
t4.Focus();
}
else if (e.KeyValue == 38)
{
t9.Focus();
}
else if (e.KeyValue == 37)
{
t2.Focus();
}

}

private void t4_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
{
t7.Focus();
}
else if (e.KeyValue == 40)
{
t7.Focus();
}
else if (e.KeyValue == 39)
{
t5.Focus();
}
else if (e.KeyValue == 38)
{
t1.Focus();
}
else if (e.KeyValue == 37)
{
t3.Focus();
}
}

private void t5_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
{
t7.Focus();
}
else if (e.KeyValue == 40)
{
t8.Focus();
}
else if (e.KeyValue == 39)
{
t6.Focus();
}
else if (e.KeyValue == 38)
{
t2.Focus();
}
else if (e.KeyValue == 37)
{
t4.Focus();
}
}

private void t6_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
{
t7.Focus();
}
else if (e.KeyValue == 40)
{
t9.Focus();
}
else if (e.KeyValue == 39)
{
t7.Focus();
}
else if (e.KeyValue == 38)
{
t3.Focus();
}

else if (e.KeyValue == 37)
{
t5.Focus();
}

}

private void t7_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
{
t1.Focus();
}
else if (e.KeyValue == 40)
{
t1.Focus();
}
else if (e.KeyValue == 39)
{
t8.Focus();
}
else if (e.KeyValue == 38)
{
t4.Focus();
}

else if (e.KeyValue == 37)
{
t6.Focus();
}

}

private void t8_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
{
t1.Focus();
}
else if (e.KeyValue == 40)
{
t2.Focus();
}
else if (e.KeyValue == 39)
{
t9.Focus();
}
else if (e.KeyValue == 38)
{
t5.Focus();
}

else if (e.KeyValue == 37)
{
t7.Focus();
}
}

private void t9_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
{
t1.Focus();
}
else if (e.KeyValue == 40)
{
t3.Focus();
}
else if (e.KeyValue == 39)
{
t1.Focus();
}
else if (e.KeyValue == 38)
{
t6.Focus();
}

else if (e.KeyValue == 37)
{
t8.Focus();
}
}

private void button1_Click(object sender, EventArgs e)
{
StringBuilder str = new StringBuilder();
str.AppendFormat("第一个输入值是:"+t1.Text);
str.AppendFormat("\n第二个输入值是:" + t2.Text);
str.AppendFormat("\n第三个输入值是:" + t3.Text);
str.AppendFormat("\n第四个输入值是:" + t4.Text);
str.AppendFormat("\n第五个输入值是:" + t5.Text);
str.AppendFormat("\n第六个输入值是:" + t6.Text);
str.AppendFormat("\n第七个输入值是:" + t7.Text);
str.AppendFormat("\n第八个输入值是:" + t8.Text);
str.AppendFormat("\n第九个输入值是:" + t9.Text);
MessageBox.Show(str.ToString());
}

private void button2_Click(object sender, EventArgs e)
{
this.Close();
}

private void enterevent_Load(object sender, EventArgs e)
{

}

}
}

回答3:

如果不需要太复杂的可以不用API

KeyEventArgs
这个结构里有,看你要从哪里获取了,如果你用事件的话,事件函数一定会带(KeyEventArgs e)类似这样的参数
用e.KeyCode可以确认哪个按下了

回答4:

keypreview
属性设为true
这个是键盘在窗体注册的属性
楼主你也可以用ascii码去实现
键盘上的每一个键都对应一个ascii码

回答5:

看二楼的