none
有人帮看一眼 RRS feed

  • 问题

  •  

    我想判断在IDC_MAINWIN  窗体中用户有无登陆,IDC_USERLOG是登陆窗体,就是下面 IDC_MAINWIN的代码的remarks的值不随着IDC_USERLOG中的remake的值变化而变化,不知道为什么,或者是有更好的方法,

     

     IDC_USERLOG代码:

    首先我声明了字段:

    private IDC_MAINWIN main;

    然后是我的构造函数

    public IDC_USERLOG(IDC_MAINWIN mainwin)
            {
                InitializeComponent();
                this.main = mainwin;
            }

    再就是我的属性构造器

    public bool Marks
            {
                get
                {
                    return this.remarks;
               
                }
                set
                {
                    this.remarks = value;
                }
            }

    在fIDC_USERLOGorm1登陆成功的代码中设置了: this.Marks = true;

     

     

     IDC_MAINWIN代码:

     IDC_USERLOG use= new IDC_USERLOG(this);
               
                if (use.Marks)
                {

    MessageBox.Show("登陆成功");

    }

    else

    {

    MessageBox.Show("登陆失败");

    }

    2008年12月26日 6:29

答案

  • 你好
       问题出在这里,就是这个属性的定义,你在form2中使用这行代码:
    IDC_USERLOG use= new IDC_USERLOG(this);通过构造函数把form2的实例传给了form1,当你在form1中使用this.Marks=true;设置了这个属性为真,通过你的这个Marks属性的定义,是把this.remarks的值设置为真了,这里的this是指form1,所以你修改的是form1的remarks的值,而不是form2的remarks的值!!如果你要想form2的remarks的值也发生变化,可以设置在form2中也定义一个Marks属性,然后在设置this.Marks=true后设置main.Marks=true
    public bool Marks
            {
                get
                {
                    return this.remarks;
               
                }
                set
                {
                    this.remarks = value;
                }
            }

    希望以上解释对你有帮助!

    2008年12月26日 7:58
    版主

全部回复

  • 你好
       问题出在这里,就是这个属性的定义,你在form2中使用这行代码:
    IDC_USERLOG use= new IDC_USERLOG(this);通过构造函数把form2的实例传给了form1,当你在form1中使用this.Marks=true;设置了这个属性为真,通过你的这个Marks属性的定义,是把this.remarks的值设置为真了,这里的this是指form1,所以你修改的是form1的remarks的值,而不是form2的remarks的值!!如果你要想form2的remarks的值也发生变化,可以设置在form2中也定义一个Marks属性,然后在设置this.Marks=true后设置main.Marks=true
    public bool Marks
            {
                get
                {
                    return this.remarks;
               
                }
                set
                {
                    this.remarks = value;
                }
            }

    希望以上解释对你有帮助!

    2008年12月26日 7:58
    版主
  • 很感谢您的耐心的回答和帮我解决问题。好人哪,我坚信技术无止境!
    2008年12月27日 12:12
  • 不必客气啊!欢迎你常常来这里和大家交流技术问题!
    恩,的确学无止境啊!大家互相交流才能更快的提高!
    2008年12月27日 14:15
    版主