[英]Access Form Method from another static class
所以,我现在几乎没有线索,甚至不确定它是否可能。 我有一个Visual C#Form,它由Program.cs运行(标准方式 - 当然VS完成了所有设置工作)。
除此之外,我在一个单独的C#文件中有一个带静态方法的类,只是因为我喜欢将一个类保存在一个文件中。
我的表单代码有一个公共函数:
public void print(String text)
{
rtb_log.appendText("\n" + text);
}
在某个时间点,我从另一个类调用静态函数。
是否有可能从我的其他课程实际访问该打印方法? 因为它指的是rtb_log(一个富文本框),所以只有实例化才有效,当然也不是静态的。 但是因为静态方法只能访问静态成员,所以我在这里有点想法如何在另一个类的表单上附加一些文本。
这里有什么帮助?
但是因为静态方法只能访问静态成员,所以我在这里有点想法如何在另一个类的表单上附加一些文本。
静态成员可以访问实例成员 - 他们只需要知道调用该方法的实例。 所以你可以写:
public static void Foo(OtherForm myOtherForm)
{
// Do some stuff...
myOtherForm.Print(); // Case changed to comply with naming conventions
}
然后,当您调用该方法时,您需要提供相关表单的引用。 基本上东西已经确定要调用的实例Print
上。 弄清楚谁拥有这些信息,然后从那里传递信息。 我建议不要使用静态变量来保存这些信息。 (全局州使代码更少可重用,更难以推理,并且更难测试。)
编辑:鉴于评论,这听起来像你想要的:
// Within the form
private void HandleClick(object sender, EventArgs e)
{
SomeClass.StaticMethod(this);
}
见下文
class SomeMainClass
{
private ClassB form = null;
private void SomeMethod()
{
form = new ClassB();
form.Show();
ClassA foo = new ClassA(this);
}
// Use an accessor.
public ClassB Form
{
get { return this.form; }
}
}
class ClassA
{
private SomeMainClass mainClass = null;
// Constructor.
public ClassA(SomeMainClass _mainClass)
{
this.mainClass = _mainClass;
}
private void SomeMethod()
{
this.mainClass.Form.Print("Something to print");
}
}
class ClassB : Form
{
// Constructor.
public ClassB()
{
InitializeComponent();
}
public void Print(String text)
{
rtb_log.appendText("\n" + text);
}
}
编辑:这是回应您的评论的基本方法。 在资源方面不是那么高效,而是做你想要的......
我希望这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.