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"消息做出反应。除了解决您的问题外,这个设计还更好。