如何将文本附加到另一个类的表单中的文本框(比如Student.Cs)在C#中? [英] How Can I Appendtext To A Textbox In The Form From Another Class(Say Student.Cs) In C# ?
问题描述
我有一个表单(form1.cs),我在同一个项目中有一个类(Operation.cs)。它的东部使用textBox1.AppendText(messages)从form.cs中更新textBox。但是我如何从Operation.cs更新或传递消息到textBox。这个类是一个方法组,包含很少的方法。
我可以使用:
this.Invoke(new UpdateLogCallback(this.UpdateLog),new object [] {messages});
实现相同并在form1.cs中定义以下内容
Hi,
I have a form(form1.cs) and i have a class(Operation.cs) both inside the same project. Its east to update a textBox from within form.cs using textBox1.AppendText("messages"). But how do i update or pass messages to the textBox from Operation.cs . This class is a method group and contains few methods.
Can i use :
this.Invoke(new UpdateLogCallback(this.UpdateLog), new object[] { "messages" });
to achieve the same and defining the following in the form1.cs
private delegate void UpdateStatusCallback(string strMessage);
private delegate void UpdateLogCallback(string strMessage);
private void UpdateLog(string strMessage)
{
if (txtLog.InvokeRequired)
{
txtLog.Invoke(new UpdateLogCallback(UpdateLog), strMessage);
return;
}
txtLog.AppendText(strMessage);
}
请帮我解决方案!!
谢谢:)
Please help me with the solution!!
Thanks :)
推荐答案
不,不要。
问题是,如果您的Operation类直接更新文本框,如果没有您的特定表单,它将无法工作 - 这很糟糕,因为你不能重复使用它,你不能在不考虑对Operation类的影响的情况下改变形式。
有两种方法可以这样做:
1)在外部世界可以调用的操作中有一个公共方法(静态或不需要):它执行操作,并返回结果。然后外界负责使用该结果来更新它的文本框(或者其他任何想要使用的文本框)
2)在Operation类中有一个结果就绪并且有外部的事件世界处理它。然后外部世界通过公共财产访问结果,并自行更新。
第一种方式适用于不需要很长时间的简单操作;第二个是长时间不能立即返回的操作。
要创建一个简单的事件,这就解释了:在两种形式之间传递信息,第2部分:儿童到父母 [ ^ ]
这篇关于如何将文本附加到另一个类的表单中的文本框(比如Student.Cs)在C#中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!