c# - 从另一个静态类访问表单方法

标签 c# .net forms static

所以,我现在几乎没有任何线索,甚至不确定这是否可能。 我有一个 Visual C# 窗体,它由 Program.cs 运行(标准方式 - 当然,VS 完成了所有设置工作)。

除此之外,我在一个单独的 C# 文件中有一个带有静态方法的类,只是因为我喜欢将一个类保存在一个文件中。

我的表单代码有一个公共(public)函数:

public void print(String text)
{
    rtb_log.appendText("\n" + text);
}

在某个时间点,我从另一个类调用静态函数。

是否有可能从我的其他类(class)实际访问该打印方法?因为它指的是 rtb_log(一个富文本框),它只有在实例化时才可用,当然不是静态的。但是由于静态方法只能访问静态成员,所以对于如何从另一个类将一些文本附加到我的表单上,我在这里有点不知所措。

这里有什么帮助吗?

最佳答案

But since static methods can only access static members, I'm a little out of ideas here on how to append some text on my form from another class.

静态成员可以访问实例成员——他们只需要知道在哪个实例上调用方法。所以你可以这样写:

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);
}

关于c# - 从另一个静态类访问表单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11297946/

相关文章:

c# - 对相同类型的 Func 使用三元运算符需要进行强制转换

.net - 如何使 DockPanel 填充可用空间

html - 从 HTML 输入控件创建列表或数组的正确方法

javascript - PHP 表单发布到自身而不显示完整路径

C#.NET : Change elements in a CSS file from dynamically generated HTML?

php - 在 javascript 上使用 onClick 增加变量值并在 HTML 表单上显示新值

c# - 如何在 C# 中将未包含在 datagridview 中的其他数据库值显示到另一个表单中?

c# - 如何从控制台读取用户输入?

c# - 检查值是否在数组中 (C#)

c# - 从混合了 XML 和纯文本的流中读取