2013-03-15 75 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; 
}