winForm窗口隐藏父窗口显示子窗口时,父窗口先移动一下位置再隐藏,为什么?

代码如下

    private void BtnLogin_Click(object sender, EventArgs e)
        {
            if (combUName.Text.Trim() == "" || txtUserPassword.Text.Trim() == "")
            {
                MessageBox.Show("用户名或者密码不能为空,请重试!");
                return;
            }
            userInfo = new UserInfo
            {
                UName = combUName.Text.Trim(),
                UPwd = txtUserPassword.Text.Trim()
            };
            userInfo = userInfoBll.SearchUserInfo(userInfo);
            if (userInfo != null)
            {
                this.Visible = false;
                DelayLoginTimer.Enabled = false;
                using (MainFrm mainFrm = new MainFrm(userInfo))
                {
                    mainFrm.ShowDialog();
                }
            }
            else
            {
                MessageBox.Show("用户名或者密码错误或者不存在,请重试!");
            }


        }

效果如图:

我逐一排查,发现是数据库查询这段出现了问题,

 userInfo = userInfoBll.SearchUserInfo(userInfo);

我注释掉这句话,就没问题,但是我看我数据库查询代码,没有任何特别之处啊。

 public UserInfo SearchUserInfo(UserInfo userinfo)
        {
            userInfoList = userInfoDal.Find(userinfo);
            if (userInfoList == null) return null;
            return userInfoList[0];
        }


 public List<UserInfo> Find(UserInfo userinfo)
        {
            try
            {
                string cmdstr = "select * from UserInfo where UName='" + userinfo.UName + "' and UPwd='" + userinfo.UPwd + "'";
                DataTable dt = AccessHelper.Search(constr, cmdstr);
                if (dt == null|| dt.Rows.Count <= 0) return null;
                List<UserInfo> userInfoList = new List<UserInfo>();
                foreach (DataRow row in dt.Rows)
                {
                    userInfo = new UserInfo
                    {
                        UID = Convert.ToInt32(row["UID"]),
                        UName = row["UName"].ToString(),
                        UPwd = row["UPwd"].ToString(),
                        UType = Convert.ToInt32(row["UType"]),
                        UOther = row["UOther"].ToString()
                    };
                    userInfoList.Add(userInfo);
                }
                return userInfoList;
            }
            catch (Exception ex)
            {
                string errorfile = Logs.GetCurSourceFileName();
                int errorline = Logs.GetLineNum();
                Logs.WriteLog(ex.Message, errorfile, errorline, 2);
                return null;
            }
        }

请各位大哥们指点一下。

大家都不知道吗