从另一个类访问Form1中的控件
本文关键字:控件 Form1 访问 另一个 | 更新日期: 2023-09-27 18:07:15
我有一个控件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;
}
更正语法:
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;
}
}
我认为你应该解释你实际上要做什么,因为你的事件管理在我看来并不好。也许这个事件是没有用的,或者如果你告诉我们你真正想要实现什么,你可以重构它。
为了回答你标题中的问题,另一个表单中的控件是私有成员,所以你不能在父表单的作用域之外访问它们。你能做的是公开一个公共方法来完成这个工作: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");
}
}
改变这个:
another_class myNew_another_class = new another_class();
:
another_class myNew_another_class = new another_class(this);
改成:
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;
}
我认为你的问题没有说清楚。teacher
方法在做什么?
public class Form1 : Form {
public String TextboxText {
set { this.myTextbox.Text = value; }
get { return this.myTextbox.Text; }
}
}