如何在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;
}
}发布于 2013-03-15 08:40:54
如果您想在myClass作用域中直接引用它,则将其声明为static。
或者您需要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的当前实例,以下是实例化时传递当前实例的多种方法之一
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;
}
}发布于 2013-03-15 08:46:47
嵌套类型与其包含的类型具有静态关系。这意味着默认情况下,它们不能访问包含类型的任何特定实例。如果希望内部类型访问包含类型中的某些字段,则必须将一个实例传递给内部类型。最常见的方法是将实例传递给嵌套类型的构造函数。
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;
}https://stackoverflow.com/questions/15422542
复制相似问题