2013-03-15 65 views
1

如何在form1.cs文件的另一个自定义类中引用TextBox对象(如textBox1)?文本框对象参考

myclass中,我写了textBox1,但intelliSense没有向我建议。将私人变为公众并不能解决问题。

这里是Form1.cs的

namespace Calculator { 
    public partial class Form1: Form { 
     public Form1() { 
      // InitializeComponent(); 
     } 

     class myclass { 
      // What can I do to make texbox1 show up in intelliSense here? 
      // textBox1 
     } 

     public System.Windows.Forms.TextBox textBox1; 
    } 
} 
+4

请让你的问题更清楚,更易于理解,以便我们能够回答。 – 2013-03-15 00:13:11

+1

请发布一些代码。 – AbZy 2013-03-15 00:13:53

+0

顺便说一句,做罗伯特哈维所说的首选方式是向我们展示一些代码。 – dasblinkenlight 2013-03-15 00:14:08

回答

4

如果您想直接在myClass范围内引用它的示例代码,然后把它声明为静态的。

或者您需要一个Form1的实例,但不允许您在类定义范围中声明对它的引用,您需要在构造函数(或类型初始值设定项)中实例化Form1实例,它给myClass的成员。

namespace Calculator { 
    public partial class Form1: Form { 
     public Form1() { 
      InitializeComponent(); 
     } 

     class myclass { 
      TextBox textBox3=Form1.textBox1; 
      TextBox textBox4; 
      Form1 form1; 

      public myclass() { 
       form1=new Form1(); 
       textBox4=form1.textBox2; 
      } 
     } 

     static public System.Windows.Forms.TextBox textBox1; 
     public System.Windows.Forms.TextBox textBox2; 
    } 
} 

更新:

对于Form1当前实例的有关,下面是各种方式一个通过当前实例时实例化myclass

namespace Calculator { 
    public partial class Form1: Form { 
     public Form1() { 
      InitializeComponent(); 

      textBox1=textBox2; // demonstration for "static make sense" 

      var x=new Form1.myclass { 
       form1=this 
      }; 

      // now x.textBox3 is reference to textBox2 
     } 

     public class myclass { 
      TextBox textBox3=Form1.textBox1; 
      TextBox textBox4; 
      internal Form1 form1; 

      public myclass() { 
       // form1=new Form1(); 
       textBox4=form1.textBox2; 
      } 
     } 

     static public System.Windows.Forms.TextBox textBox1; 
     public System.Windows.Forms.TextBox textBox2; 
    } 
} 
+0

只是代码无意识的副本和对于未来的访问者来说,粘贴对于类似但不完全相同的问题是非常有用的。对于这个长度的代码块,应该有某种解释来描述代码的作用。 – 2013-03-15 00:45:59

+0

我在打字并保存。 – 2013-03-15 00:47:25

+0

@ O.R.Mapper它的酷,肯是第一个回答这个重新提出的问题,并详细说...我们有些人需要一点时间。 – 2013-03-15 00:52:24

3

嵌套类型与它们的包含类型具有静态关系。这意味着默认情况下,他们无权访问任何特定的包含类型实例。如果您希望内部类型从包含类型访问某个字段,则必须将实例传递给内部类型。最常见的方法是将实例传递给嵌套类型的构造函数。

public partial class Form1: Form { 
    public Form1() { 
     // InitializeComponent(); 
    } 

    class myclass { 
     private Form1 parent; 

     public myclass(Form1 parent) { 
      this.parent = parent; 
     } 

     public void DoSomething() { 
      parent.textBox1.Text = "Hello, World!"; 
     } 
    } 

    public System.Windows.Forms.TextBox textBox1; 
}