日期:2014-05-17  浏览次数:20873 次

winform窗体获得焦点事件
在窗体A获得焦点时,判断窗体B的必须项,如果为空弹出msg,返回画面B
代码如下

        public Boolean bolActive = true;
        private void formA_Activated(object sender, EventArgs e)
        {
            if (bolActive)
            {
                if (string.IsNullOrEmpty(formB.txt1.Text))
                {
                    bolActive = false;
                    MessageBox.Show("123");
                    frmB.BringToFront();
                }
            }
        }

问题是如果鼠标点击窗体A的标题栏,formA_Activated事件会运行两次,弹出两次msg,而点击窗体A的客户区就没问题,求教为什么?有什么好的解决办法?

------解决方案--------------------
先把public Boolean bolActive = false; 设置为false,然后根据如下代码:
foreach (DockContent form in formsDockPanel.Contents)
            {
                if (form is formB)
                {
                    form.Activate();
                    bolActive = true;
                    return;
                }