当我执行时,它将运行,但是当我按回车键时,消息框仍然会出现。
用于货币文本框键控
if (e.KeyCode == Keys.Enter)
{
int a, b, c;
a = int.Parse(money.Text);
b = int.Parse(bill.Text);
c = a - b;
change.Text = c.ToString();
}
对于moneytextboxKeypress
if (!(Char.IsDigit(e.KeyChar) || (e.KeyChar == (char)Keys.Back)))
{
MessageBox.Show("please enter digits only");
e.Handled = true;
}
我试图在keypress事件中解除enter键的阻塞。
if (!(Char.IsDigit(e.KeyChar) || (e.KeyChar == (char)Keys.Enter)))
{
MessageBox.Show("please enter digits only"); e.Handled = true;
}
但是“消息框”仍然出现。
发布于 2017-06-25 19:58:37
您正在调用按键两次,因为一旦您按下键盘上的任何内容,按键事件将被触发。因为您按下了" keypress ",所以keydown和keypress事件处理程序都将被触发。将所有内容放在keydown事件处理程序上,以处理所有请求:
if (e.KeyCode == Keys.Enter)
{
int a, b, c;
a = int.Parse(label1.Text);
b = int.Parse(label2.Text);
c = a - b;
label3.Text = c.ToString();
return;
}
if (!(Char.IsDigit((char)e.KeyData) || (e.KeyData == Keys.Up)))
{
MessageBox.Show("please enter digits only");
}
并删除moneytextboxKeypress。
https://stackoverflow.com/questions/44752387
复制相似问题