0

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;
} 
4

5 回答 5

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;
    }
}
于 2013-04-03T09:20:04.680 回答
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");
    }
}
于 2013-04-03T09:20:05.893 回答
0

改变这个:

another_class myNew_another_class = new another_class();

对此:

another_class myNew_another_class = new another_class(this);
于 2013-04-03T09:20:41.753 回答
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;
} 
于 2013-04-03T09:21:21.880 回答
0

我认为您没有清楚地说明您的问题。teacher方法在做什么?

但是,正如其他人所提到的,所有控制访问修饰符都是Private,因此您不能直接访问它。您可以尝试更改对象属性中的访问修饰符,或者创建一个属性:

public class Form1 : Form {
    public String TextboxText {
        set { this.myTextbox.Text = value; }
        get { return this.myTextbox.Text; }
    }
}
于 2013-04-03T09:26:23.957 回答