从不同的类中写入窗体中的RichTextBox
本文关键字:窗体 RichTextBox | 更新日期: 2023-09-27 18:13:01
我使用的是RichTextBox
,这是在Form
,我基本上使用作为日志窗口,而程序执行各种功能-很像一个调试窗口。各种方法在对各种文件执行任务时写入窗口。这个简单的类看起来像这样:
public partial class ValidationWindow : Form
{
public ValidationWindow()
{
InitializeComponent();
}
public void writeToWindow(string text)
{
if (richTextBoxValidationWindow.TextLength > 0)
{
richTextBoxValidationWindow.AppendText(Environment.NewLine + text);
}
else
{
richTextBoxValidationWindow.Text = text;
}
}
}
我已经实例化了包含文本框的表单,从一个类中以通常的方式,即ValidationWindow valWindow = new ValidationWindow()
,然后调用show()
方法来显示窗口,然后我可以使用上面的类中称为writeToWindow的方法来写入它。所有好。
我现在需要能够继续从其他类写入相同的窗口。显然,我不想为同一个Validation Window创建更多实例。那么,最好的方法是什么呢?
听起来您需要从其他表单和类访问此表单。换句话说,您需要这个表单是全局可访问的。
要做到这一点,最简单的方法是向应用程序添加一个全局变量,并在该变量中保存对日志窗口的引用。然后,如果任何其他类需要记录日志,它可以通过全局变量访问日志窗口。然而,这可能不是最好的方法,因为您将日志记录绑定到该窗口。如果您决定以不同的方式记录会发生什么?您必须更改对窗口的每个引用,这意味着整个应用程序都要更改。您最好看看消息之类的东西,它允许调用代码发送一条请求记录某些内容的消息,但不需要知道接收消息并执行实际记录的类的任何信息。我知道WOF支持MVVM,但我不确定你会如何在WinForms中做到这一点(假设这是你正在使用的)。也许你可以在"winforms messages"上搜索一下,看看会出现什么。
希望有帮助