C# c numpad的作用类似于键盘
我试图想出一个代码,根据在只读文本框中按下的键,在其他文本框中添加或减去1。我的问题是我需要区分NUMPAD0-9和qwerty键盘上方的s。当我将下面的代码与numpad数字上的NumLock一起使用时,其行为与其他数字子域1完全相同。当NumLock关闭时,它什么也不做。当我按下numpad时,我希望它加1,当我按下非numpad时,它减去1。我试着用谷歌搜索答案,但什么都想不出来 谢谢你的帮助C# c numpad的作用类似于键盘,c#,forms,textbox,keypress,numpad,C#,Forms,Textbox,Keypress,Numpad,我试图想出一个代码,根据在只读文本框中按下的键,在其他文本框中添加或减去1。我的问题是我需要区分NUMPAD0-9和qwerty键盘上方的s。当我将下面的代码与numpad数字上的NumLock一起使用时,其行为与其他数字子域1完全相同。当NumLock关闭时,它什么也不做。当我按下numpad时,我希望它加1,当我按下非numpad时,它减去1。我试着用谷歌搜索答案,但什么都想不出来 谢谢你的帮助 void txtTotal_KeyPress(object sender, KeyPressEv
void txtTotal_KeyPress(object sender, KeyPressEventArgs e)//when a key is pressed total text box, depending on key add or subtract 1 to another test box (txtTotal is set to read only)
{
switch (e.KeyChar)
{
case (char)96://numpad 0
addNRBC();
break;
case (char)48://keyboard 0
subtractNRBC();
break;
}
}
public void addNRBC()
{
num1 = Convert.ToInt32(txtNRBC.Text);
txtNRBC.Text = Convert.ToString(num1 + 1);//adds 1 to NRBCs field
Total();
}
public void subtractNRBC()
{
num1 = Convert.ToInt32(txtNRBC.Text);
txtNRBC.Text = Convert.ToString(num1 - 1);//subtract 1
Total();
}
public void Total()//totals all textboxes except NRBCs
{
total = int.Parse(txtSegs.Text) + int.Parse(txtLymphs.Text) + int.Parse(txtMonos.Text) + int.Parse(txtBands.Text) + int.Parse(txtEos.Text) + int.Parse(txtBasos.Text) + int.Parse(txtMetas.Text)
+ int.Parse(txtMyelos.Text) + int.Parse(txtPros.Text) + int.Parse(txtBlasts.Text) + int.Parse(txtPlasmas.Text);
txtTotal.Text = Convert.ToString(total);
}
如果可能,将事件从按键更改为按键。这将允许您使用KeyEventArgs而不是KeyPressEventArgs来解决问题,因为后者似乎无法正确识别numpad 也可以使用键枚举,而不是硬编码值。这比添加评论更简洁
private void txtTotal_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.NumPad0:
addNRBC();
break;
case Keys.D0:
subtractNRBC();
break;
}
}
问题,如果您使用KeyDown并且用户按住键,是否会循环执行直到键被释放(即继续加或减直到释放)?如果是这样的话,我是否可以改用KeyUp而不让这种情况发生?@darkphoenix 86是的,它会循环。是的,KeyUp只会在按键释放时触发,所以一次。因此,正确的选择取决于你想要实现的目标。您的输入来自文本框,因此我猜键入的0也会显示出来。如果用户一直按下0,使用KeyUp键,他将在文本框中看到多个0,但在发布时只会进行一次添加。使用向下键,他将看到显示多个0,每个0将执行一个添加操作。感谢所有帮助!按键的文本框已更改为只读字段。因此,基本上我希望用户能够将光标定位在这个只读的txtTotal中,然后能够按多个不同的键对多个不同的文本框添加或减去1,然后这个txtTotal将显示所有这些文本框的总数。我为我想要在txtotal的KeyUp事件中全部使用的每个键放置一个case语句。对于每个需要添加或减去的文本框,我都有add和subtract方法sie addNRBC。这似乎奏效了。再次感谢。