//在TextBox控件中有一事件,代码如下
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode.ToString() == Keys.Enter.ToString())
{
MessageBox.Show("货号输入有误,请重新输入!", "错误提示!", MessageBoxButtons.OK, MessageBoxIcon.Hand);
}
}//代码并没有错误,就是有一奇怪的现象是当你按下Enter键时出发了上面的事件,可是你再按Enter键怎么都关不了提示窗口,请问这是为什么?焦点不是已经移到
//MessageBox上面了吗?为什么还触发textBox1_KeyUp事件呢?如何解决上述问题?
这样就不会出现类似问题了。
当弹出对话框后,其实form还是在等待你对弹出对话框作出处理,当按下enter键后,
form会接受到这一事件,那时焦点还是在此文本框里。 所以会出现连续的弹出。。
label1.Focus();//没有其它的控件的时候怎么办?
MessageBox.Show("货号输入有误,请重新输入!", "错误提示!", MessageBoxButtons.OK, MessageBoxIcon.Hand);
System.Threading.Thread.Sleep(100);//加上这句也无效
((TextBox)sender).Focus();//设置为焦点后又弹出了上面的提示窗口.
//有没有好的解决方案呀?
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 WindowsFormsApplication4
{
public partial class Form1 : Form
{
int n = 0;
public Form1()
{
InitializeComponent();
} private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode.ToString() == Keys.Enter.ToString())
{
if (n == 1)
{
label1.Focus();
MessageBox.Show("货号输入有误,请重新输入!", "错误提示!", MessageBoxButtons.OK, MessageBoxIcon.Hand);
System.Threading.Thread.Sleep(100);
((TextBox)sender).Focus();
}
n = 0;
}
} private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
n = 1;
}
}
}
我有时候坐 GUI 也出现过这样的问题