我建议你不要这样做。您真的想要一个依赖于文本编辑在表单中实现方式的类,还是想要一种允许您获取和设置文本的机制?
我建议后者。因此,在您的表单中,创建一个包含相关TextBox 控件的Text 属性的属性:
public string FirstName
{
get { return firstNameTextBox.Text; }
set { firstNameTextBox.Text = value; }
}
接下来,创建一些机制,通过它您的类可以获得对表单的引用(例如通过构造函数)。然后该类可以使用该属性来访问和修改文本:
class SomeClass
{
private readonly YourFormClass form;
public SomeClass(YourFormClass form)
{
this.form = form;
}
private void SomeMethodDoingStuffWithText()
{
string firstName = form.FirstName;
form.FirstName = "some name";
}
}
更好的解决方案是在接口中定义可能的交互,并让该接口成为您的表单和其他类之间的契约。这样类就与表单完全解耦,并且可以使用任何实现接口的方法(这为更容易测试打开了大门):
interface IYourForm
{
string FirstName { get; set; }
}
在您的表单类中:
class YourFormClass : Form, IYourForm
{
// lots of other code here
public string FirstName
{
get { return firstNameTextBox.Text; }
set { firstNameTextBox.Text = value; }
}
}
...和班级:
class SomeClass
{
private readonly IYourForm form;
public SomeClass(IYourForm form)
{
this.form = form;
}
// and so on
}