我有一个控件textBox1
位于我的主要格式Form1
中。我希望能够更改另一个类textBox1
中的another_class
文本,但我无法做到。我的another_class
有一个事件teacher
,我通过以下操作从Form1
处理
private void button1_Click(object sender, EventArgs e)
{
another_class myNew_another_class = new another_class();
myNew_another_class.teacher(sender, e);
}
所以我无法在another_class
中创建以下内容,因为它会混淆我上面的处理程序并将其标记为红色
public another_class (Form1 anytext_Form)
{
this.anytext_Form = anytext_Form;
}
答案 0 :(得分:1)
通过以下方式更正语法:
partial class Form1 {
private void button1_Click(object sender, EventArgs e) {
another_class myNew_another_class=new another_class(this);
myNew_another_class.teacher(sender, e);
}
}
public partial class another_class {
Form anytext_Form;
public void teacher(object sender, EventArgs e) {
// do something
}
public another_class(Form anytext_Form) {
this.anytext_Form=anytext_Form;
}
}
答案 1 :(得分:0)
我认为你应该解释你实际上该做什么,因为你的事件管理看起来并不好IMO。也许这个事件没用,或者如果你告诉我们你想要实现什么,也许你可以重构它。
要回答标题中的问题,其他表单中的控件是私有成员,因此您无法在父表单范围之外访问它们。你可以做的是暴露出能够完成工作的公共方法:
public class Form1 : Form
{
public void SetMyText(string text)
{
this.myTextbox.Text = text;
}
}
public class Form2 : Form
{
public void Foo()
{
var frm1 = new Form1();
frm1.SetMyText("test");
}
}
答案 2 :(得分:0)
改变这个:
another_class myNew_another_class = new another_class();
到此:
another_class myNew_another_class = new another_class(this);
答案 3 :(得分:0)
更改为:
private void button1_Click(object sender, EventArgs e)
{
another_class myNew_another_class = new another_class(this); //where this is Form1
myNew_another_class.teacher(sender, e);
}
这就是你的“another_class”的构造函数。
public another_class (Form1 anytext_Form)
{
this.anytext_Form = anytext_Form;
}
答案 4 :(得分:0)
我不认为你清楚地陈述你的问题。什么是teacher
方法呢?
但是,正如其他人所提到的,所有控件访问修饰符都是私有,因此您不能直接访问它。您可以尝试更改对象属性中的访问修饰符,或创建属性:
public class Form1 : Form {
public String TextboxText {
set { this.myTextbox.Text = value; }
get { return this.myTextbox.Text; }
}
}