从另一个类

时间:2015-05-05 00:05:55

标签: c#

我有我的WinForm(Form1)和另一个类(Class1)。 Form1有一个文本框,其名称为TextBox,我希望在Class1中更改TextBox中的文本。我怎样才能做到这一点?我已经到处检查并尝试过Stackoverflow和其他来源的所有方法,但它们似乎都没有工作。

编辑: 我尝试过将TextBox公之于众,但这并没有奏效。 然后我尝试使用以下代码:

private readonly Form1 form;

public Class1(Form1 form) {
    this.fom = form;
}

private void EditText() {
    form.TextBox.Text = .... (TextBox seems to not be an object, even though it is)
}

这也最终无法正常工作。 最后,一旦我在Visual Studio编辑器中将TextBox组件修饰符设置为public,它就没有错误,直到我运行它所说的程序:

  

错误1可访问性不一致:字段类型' NSTextBox'比字段更容易访问' OverloadBot_Panel.Form1.ConsoleTextBox' D:\ Users \ goff-laptop \ Desktop \ OverloadBotNet \ OverloadBot_Panel \ OverloadBot_Panel \ Form1.Designer.cs 364 26 OverloadBot_Panel

如果重要的话,我正在使用主题。

1 个答案:

答案 0 :(得分:1)

基本上,您需要以正确的方式执行此操作。或者至少比直接暴​​露控件更好。

为了保持紧密的封装以及关注点分离,您不应该将控件暴露给外部世界无论如何。而是在表单类上定义一个方法,为您设置文本框:

public void UpdateText(string text)
{
    myTextBox.Text = text;
}

在来电者中:

private void DoStuff()
{
   form.UpdateText("Test");
}

现在调用者不需要知道表单的内部结构。事实上,如果你通过一个界面,它就不会关心它是否是一个事件与一个表格交谈。另一方面的课程只会对" UpdateText"消息以任何方式需要。除了解决问题之外,此设计 更好。