我怎么能引用TextBox
对象(说textBox1中)在另一个自定义类在Form1.cs文件?
在myclass
,我已经写了textBox1
,但智能感知不建议给我。 更改私人公众并不能解决问题。
下面是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;
}
}
如果您想直接的范围内引用它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;
}
}
嵌套类型必须包含他们的类型的静态关系。 这意味着,在默认情况下,他们没有访问包含类的任何特定实例。 如果你想在内部类型从包含类型访问某些领域,你必须一个实例传递给内部类。 最常见的方式是将一个实例传递到嵌套式的构造。
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;
}