我的代码:
namespace Test{
public partial class Form1 : Form
{
public Form1()
{
// I want from this place to access the MyClass.test("hello");
}
}
}
namespace Test{
class MyClass
{
public void test (string text)
{
// here i want to do richtextbox1.clear(); but the textbox is not available
}
}
}
答案 0 :(得分:0)
你不想这样做。例如,您可以这样做:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
var myClass = new MyClass(this.richtextbox1);
myClass.SetTextBoxText("hello");
}
}
class MyClass
{
RichTextBox _textBox;
public MyClass(RichTextBox textBox)
{
_textBox = textBox;
}
public void SetTextBoxText(string text)
{
_textBox.Clear();
_textBox.Text = text;
}
}
这使用构造函数注入来传递文本框以对contstructor进行操作。在Form1
的构造函数中,MyClass
实例化了对文本框的引用,该文本框在InitializeComponent()
中初始化。然后,当您调用SetTextBoxText
时,该类会清除关联的文本框的文本,然后将其设置为传递的文本。
这比通常建议的方法更具体:在制作文本框Form1
之后,只需将整个MyClass
实例传递给public
的构造函数,但这样就无法重用{{} 1}}用于其他形式。
但是如你所见,这样做毫无意义。您可以让MyClass
直接包含Form1
。
答案 1 :(得分:0)
您的问题并不十分清楚,但我假设您的richtextbox1
位于Form1
。
默认情况下,表单的所有UI元素都有private
访问修饰符 - 这就是为什么您无法从外部类访问richtextbox1
的原因。
您可以将其访问模式更改为public
- 但我强烈鼓励您不要这样做。
而是在Form1
类中编写一些方法,如
public void ClearRichTextBox()
{
richtextbox1.Clear();
}
并使用它。
答案 2 :(得分:0)
可以通过多种方式完成。我最喜欢的是声明" MyClass"的对象。在" Form1"通过"这个"指针作为参数。因此," MyClass"的对象class可以访问所有成员和公共函数" Form1"。包含RichTextBox1。
namespace Test{
public partial class Form1 : Form
{
MyClass MyClassObject;
public Form1()
{
InitializeComponent();
MyClassObject=new MyClass(this);
MyClassObject.test("hello");
}
}
}
namespace Test{
class MyClass
{
Form1 parent;
public MyClass(Form1 parentForm)
{
parent=parentForm;
}
public void test (string text)
{
parent.richtextbox1.clear();
}
}
}