日期:2014-05-18  浏览次数:21057 次

winform中用户控件中textbox的focus问题,求高手!
窗体中有一个用户控件,用户控件有个textbox,textbox的leave事件,该事件先弹出一个消息框,然后会执行textbox.Focus()方法。

现在的问题是 如果我把焦点移到用户控件内部的其他控件上,很正常。如果焦点移到用户控件之外的控件上,会一直执行leave事件,陷入死循环。可能是因为textbox没有获取焦点。请问该如何解决?
代码如下:
C# code
private void textBox_fpbl_Leave(object sender, EventArgs e)
        {
            string text = textBox_fpbl.Text.Trim();

            if (text == string.Empty)
            {
                MyTip.WarnTip("业绩比例不能为空!");
               
                textBox_fpbl.Focus();
                return;
            }
        }



------解决方案--------------------
间接性死循环,比方说楼主的程序是个mdi,会造成程序卡死(但cpu不高);
换个方法
private void textBox1_Validating(object sender, CancelEventArgs e)
{
string text = textBox1.Text.Trim();

if (text == string.Empty)
{
MyTip.WarnTip("业绩比例不能为空!");


e.Cancel = true;

}
}