经调试显示:我调用的一个返回DataSet类型的对象ds中读取某个字段的值为“普通”,证明DataSet不是空。把ds ToString后赋值给public string userType,在另一个窗体用到userType时显示userType值为null,我就诡异的很。大概代码意思:ds=业务层类.获取返回DataSet结果集的方法();
userType=ds.tables[0].rows[0][0].tostring();
if(userType=="普通")()
{}
else
{}调试框显示:
ds.tables[0].rows[0][0].tostring()          值        "普通"
usertype                                    值        null
为什么呢,急死我了都。

解决方案 »

  1.   


    userType=ds.tables[0].rows[0]["你的列名"].tostring();
      

  2.   

    是在别的窗体中调用userType。
    switch (i){
    case 0:break;
    case 1:break;
    case 2:break;
    case 3:
    【ds=业务层类.获取返回DataSet结果集的方法();
    userType=ds.tables[0].rows[0][0].tostring();break;】
    “这段代码在switch中,是不是不能在switch中这样赋值啊”}
      

  3.   

    嗯,我试过直接给userType赋值“普通”,跨窗体调用(string str=窗体1.userTyp)就没问题,str值为“普通”,后续操纵正常;
    一旦把ds的先值赋给userType,再跨窗体调用(string str=窗体1.userTyp)就是显示str为null,后续操作显示不正常
      

  4.   

    在窗体1中调试下 窗体1.userTyp 的值检查是取值错误,还是传值错误断点调试下
      

  5.   

    终于成功了,原来跨窗体传值不是这样的,有一个小的技巧,刚从网上查的,分享给大家吧:
    【通过窗体的公有属性值和Owner属性特点:实现简单,灵活的窗体间的传值】
    实现代码如下:
    ------------------------------------------------------------------
    在窗体Form1中:
    public string userType;ds=业务层类.获取返回DataSet结果集的方法();
    userType=ds.tables[0].rows[0][0].tostring();Form2 f2 = new Form2 ( );
    f2.ShowDialog ( this ); //把Form1作为Form2的所有者传递给Form2
    ------------------------------------------------------------------
    在窗体Form2中
    Form1 f1 = ( Form1 ) this.Owner;//Form2的所有者是Form1if(f1.userType=="普通")()
    {}
    else
    {}