请教下面这个if判断为什么不执行,明明值是相等的,求解

请问下面这个if判断为什么不执行,明明值是相等的,求解
目的是判断用户名密码是否和数据库里面的相同,用户名验证没有问题,但是密码就是不行,所以就单独测试
就先弹出两个窗体显示两者的值,输入的密码和数据库中的是一样的,但是为啥if下的还是没执行,、
究竟问题在哪,


       MessageBox.Show(this.txtPwd.Text);
       MessageBox.Show(dr["_pass"].ToString ());

       if (this.txtPwd.Text == dr["_pass"].ToString())
        {
             b = true;
             _name = dr["_name"].ToString();
             _pass = dr["_pass"].ToString();
        }
        if (b == true)
        {
              M0 dakaim0 = new M0();
              dakaim0.Show();
         }
------解决思路----------------------
确认是否多空格少空格,大小写是否一致,然后与其问还不如调试
------解决思路----------------------
if (this.txtPwd.Text.Trim().ToUpper() == dr["_pass"].ToString().Trim().ToUpper())

先看看
------解决思路----------------------


if (this.txtPwd.Text.Trim().ToLower() == dr["_pass"].ToString().Trim().ToLower())


------解决思路----------------------
数据库里的字段类型是varchar
还是char
如果是char,不足位数会用空格补齐
------解决思路----------------------
所以治本的办法还是改数据库里的字段类型
乱用Trim()的话,你密码就不能带空格了