关于c#:从另一个类访问NSTextBox


Access NSTextBox from another class

我有我的WinForm(Form1)和另一个类(Class1)。Form1有一个名为textbox的文本框,我想更改Class1中textbox内的文本。我该怎么做?我已经检查了所有地方,尝试了StackOverflow和其他源上的所有方法,但它们似乎都不起作用。

编辑:我试过把文本框公开,但没用。然后我尝试使用以下代码:

1
2
3
4
5
6
7
8
9
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编辑器中将文本框组件修饰符设置为public时,它不会给我任何错误,直到我运行程序,程序中显示:

Error 1 Inconsistent accessibility: field type 'NSTextBox' is less accessible than field 'OverloadBot_Panel.Form1.ConsoleTextBox' D:\Users\goff-laptop\Desktop\OverloadBotNet\OverloadBot_Panel\OverloadBot_Panel\Form1.Designer.cs 364 26 OverloadBot_Panel

我在用一个主题,如果这很重要的话。


基本上,你需要以正确的方式来做这件事。或者至少比直接暴露控件更好的方法。

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

1
2
3
4
public void UpdateText(string text)
{
    myTextBox.Text = text;
}

在呼叫者中:

1
2
3
4
private void DoStuff()
{
   form.UpdateText("Test");
}

现在调用者不需要知道表单的内部结构。事实上,如果您改为浏览一个接口,那么它就不关心它是否是事件与窗体的对话。另一方的类只会以它需要的任何方式对"updateText"消息做出反应。除了解决您的问题外,这个设计还更好。