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

在一个窗体内调用另一个窗体的函数为何会失败?
本帖最后由 foxd 于 2013-03-01 16:45:13 编辑
我的程序主界面窗体frmMain中有一个setUserRights()的函数,另有frmLogin和frmZXCX这两个子窗体,在这两个子窗体内都需要调用主窗体frmMain中的setUserRights()函数。我在frmLogin窗体中调用获得成功而在frmZXCX窗体中调用却失败了。
在frmLogin窗体中,我用:
namespace Weighing
{
    public partial class frmLogin : Form
    {
        frmMain frm;

        public frmLogin(Form f) : this()
        {
            frm = (frmMain)f;
        }
        ......

        void Button1_Click()
        {
             frm.setUserRights();   //本句调用成功
        }
     }
}

而在frmZXCX这个子窗体我是照猫画虎地写代码,如:
namespace Weighing
{
    public partial class frmZHCX : Form
    {
        frmMain frm;

        public frmZHCX(Form f) : this()
        {
            frm = (frmMain)f;
        }
        ......
        void Button1_Click()
        {
             frm.setUserRights();   //本句调用不成功
        }
    }
}

结果却报错,说是未将对象引用设置到对象的实例。Why? 谢谢!


------解决方案--------------------
frmZHCX 生成对象的时候。你把frmMain 传过来了?
看你怎么调用的
------解决方案--------------------
结果却报错,说是未将对象引用设置到对象的实例。
错误都报给你了。。。
 frm.setUserRights();   //本句调用不成功  这里的frm 是null 没有传到这个窗体
------解决方案--------------------
你是怎么实例化对象的,
在frmMain中
frmZHCX aa=new frmZHCX(this);
aa.show()吗?
------解决方案--------------------
public static