我有我的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
如果重要的话,我正在使用主题。
答案 0 :(得分:1)
基本上,您需要以正确的方式执行此操作。或者至少比直接暴露控件更好。
为了保持紧密的封装以及关注点分离,您不应该将控件暴露给外部世界无论如何。而是在表单类上定义一个方法,为您设置文本框:
public void UpdateText(string text)
{
myTextBox.Text = text;
}
在来电者中:
private void DoStuff()
{
form.UpdateText("Test");
}
现在调用者不需要知道表单的内部结构。事实上,如果你通过一个界面,它就不会关心它是否是一个事件与一个表格交谈。另一方面的课程只会对" UpdateText"消息以任何方式需要。除了解决问题之外,此设计 更好。