我在一个项目中有一个form1,form1中有textBox1。我向项目中添加一个类,想在这个类中访问form1中的textBox1。
我是这样做的:
Form1 form1=new Form1();
TextBox tb=form1.textBox1;
编译器提示说,form1是字段,而不是类。(我把textBox1改为public的了)
但是这样就可以:
TextBox textBox0=new Form1().textBox1;
这是为什么啊?
还有就是我如果想在一个类中访问另外一个类中的private变量,应该怎么做比较好呢?就像java中的javabean那样?
我是菜鸟,大家多多指教,谢谢

解决方案 »

  1.   

    TextBox textBox0=new Form1().textBox1;是声明
    TextBox tb=form1.textBox1;是赋值还有就是我如果想在一个类中访问另外一个类中的private变量,应该怎么做比较好呢?
    从第一个类中把那个private变量用REF定义一下然后传过去,在第二个类里面用REF定义接收
      

  2.   

    to:lbtbox(燕弓) 
    那如果我想用textBox应该如何操作呢?我有点晕,还有弱弱的问一句,REF是什么。。
    菜死我了。。-_-!
      

  3.   

    我在msdn上看到一个关于访问器的定义,好像类似javabean的概念,用这个能够访问其他类的私有成员的属性吗?
      

  4.   

    我在vs.net下按照你的描述做了一遍,但并未出现你所说的编译错误!!!
      

  5.   

    to:bobseadream(bobo) 
    不会吧,我做了好几次了都是这样,另外我添加的不是form,而是一个class啊
      

  6.   

    to:
    回复人: j0hnny() ( ) 信誉:100  2005-05-20 11:27:00  得分: 0  
       我在msdn上看到一个关于访问器的定义,好像类似javabean的概念,用这个能够访问其他类的私有成员的属性吗?这个特性应该在反射里面得到支持.
      

  7.   

    我不知道你在什么地方产生了你的class与frm的信息交换,你想访问这对象不成问题
    可以在frm里公开一个属性,这个属性与你的textBox的属性联动就好了
      

  8.   

    to:cysoft(我用皮筋打你家玻璃)
    是这样的。这个程序大概有20个左右需要用户输入的控件,要把他们都存到一个xml文件中,我想这么多的东西全写在一个form里面有点乱,所以就想写个class把这些代码提出来。你说的这个公开属性指的是什么?能不能具体点。我刚开始用c#,好多地方不明白,请多指教啊
      

  9.   

    先回答你的第二个问题:假定有一个Int32类型的私有变量someint;class A
    {
    //私有变量;
    private Int32 someint; //定义一个特性;
    private Int32 Someint
    {
    get {return someint;}
    set {someint = value;}
    } ……
    }class B
    {
    A a = new A();

    //获得someint的值;
    Int32 otherint = a.Someint;

    //设置someint的值;
    a.Someint = 756; ……
    }
      

  10.   

    手误,上面的prprivate Int32 Someint改称public Int32 Someintclass A
    {
    //私有变量;
    private Int32 someint; //定义一个特性;
    public Int32 Someint
    {
    get {return someint;}
    set {someint = value;}
    } ……
    }class B
    {
    A a = new A();

    //获得someint的值;
    Int32 otherint = a.Someint;

    //设置someint的值;
    a.Someint = 756; ……
    }
      

  11.   

    还有就是我如果想在一个类中访问另外一个类中的private变量,应该怎么做比较好呢?就像java中的javabean那样?
    用属性.
    private string m_str;public string mystr
    {
      get
        {
            return m_str;
        }
      set
        {
            m_str = value;
        }
    }
      

  12.   

    而至于第一个问题,也可以用特性(SmartField)来解决。class A
    {
    //定义一个特性(SmartField);
    prublic TextBox GetTextBox1;
    {
    get {return textBox1;}
    } ……
    }class B
    {
    A a = new A();
    TextBox otherTextBox = a.GetTextBox1; ……
    }
      

  13.   

    用ref引用传递值,在一个类中定义
    private a;另一个类的方法中:
    Sddf(ref a)
    不知道这样是否可以,我也是菜鸟