【发布时间】:2018-12-14 11:57:07
【问题描述】:
我正在尝试将文本“附加”到我用作日志窗口的 Richtextbox 以显示来自我的 Winforms 应用程序和其他服务类的事件。为了清楚起见,我想附加文本。
我已经尝试了这里的所有建议。我在表单中设置了一个公共属性,我创建了一个委托,我创建了一个类来处理它。但它不会附加文本,它要么清除窗口(当我使用
var f = new Form1();,我明白为什么会发生这种情况,因为它正在内存中创建一个新的表单)
我最接近让它工作的是我写的以下课程。
class RichTextBoxAppend
{
public static void AddNewText(string message, Form1 f)
{
f.richLogWindow.AppendText(DateTime.Now.ToString() + ": " + message + "\r\n");
}
}
我通过以下方式从另一个类方法中调用它:
public SomeClass{
public SomeMethod(){
//Some stuff happens here
RichTextBoxAppend.AddNewText("Some message", Form1);
}
}
我得到的错误是
'Form1' 是一个类型,在给定的上下文中是无效的
我不想在内存中创建一个新表单,因为这会清除 Richtextbox。
总之,我想从我的应用程序的任何地方“附加”文本,而不清除 Richtextbox。
TIA
【问题讨论】:
-
抱歉,这是我的打字错误。我已经更新了问题。
-
RichTextBoxAppend.AppendText("Some message", Form1);Form1 是一个类型,你需要传递你的form1Instance或者你命名你的Form1对象 -
如果不创建新表单,我无法从另一个类传递表单,然后它会清除richtextbox 中的所有文本。
-
您只需创建一次表单,然后将其传递给您可能需要的所有
AppendText调用 -
就像一个注释一样,您不必将表单作为参数传递,因为您可以从
Application.OpenForms访问它 - 假设只有一个,您可以使用类似var form = Application.OpenForms.Cast<Form>().Single(f => f is Form1)的东西RichTextBoxAppend
标签: c# winforms richtextbox appendtext