首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于在文本框的Enter事件往设置焦点后,代码执行过程很不解

2012-09-25 
关于在文本框的Enter事件去设置焦点后,代码执行过程很不解。因为我在写程序遇到一个问题,所以自己写了一个

关于在文本框的Enter事件去设置焦点后,代码执行过程很不解。
因为我在写程序遇到一个问题,所以自己写了一个简单的测试。(所以大家不要看业务逻辑对不对,纯技术讨论)
两个文本框textBox1,textBox2的TabIndex为1和2。

C# code
private void textBox1_Enter(object sender, EventArgs e)        {            string str = "";        }private void textBox2_Enter(object sender, EventArgs e)        {            string str = "";            textBox1.Focus();        }

大家也可以去http://pan.baidu.com/share/link?shareid=20750&uk=3508334657下载项目。
问题是,当焦点在textBox1时,按TAB或单击textBox2,把焦点切换到textBox2时,其结果焦点肯定还是textBox1上,执行过来也应该是先执行textBox2_Enter,然后textBox1_Enter,就该结束了,但是实际情况(执行过程却不是这样的),
但是:
当按Tab时,textBox1_Enter会连续执行两次,即:textBox2_Enter-textBox1_Enter-textBox1_Enter
单击时更折腾:
textBox2_Enter--textBox1_Enter--textBox1_Enter--textBox2_Enter--textBox1_Enter--textBox1_Enter

这是为什么啊,求解中


[解决办法]
你应该是想在2失去焦点之后触发一些判断吧,如果通过,则回归焦点在1上
如果是这样,那么触发事件应该是Leave,而不是Enter
[解决办法]
你在这个函数focus之前或之后加个messagebox试试,
private void textBox2_Enter(object sender, EventArgs e)
{
string str = "";
textBox1.Focus();
}


热点排行