如何将文本附加到另一个类的表单中的文本框(比如Student.Cs)在C#中? [英] How Can I Appendtext To A Textbox In The Form From Another Class(Say Student.Cs) In C# ?

查看:106
本文介绍了如何将文本附加到另一个类的表单中的文本框(比如Student.Cs)在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆