C# 如何在C语言中持续更新文本框#

C# 如何在C语言中持续更新文本框#,c#,winforms,textbox,C#,Winforms,Textbox,我有以下代码: class NotepadCloneNoMenu : Form { protected TextBox txtbox; public NotepadCloneNoMenu(string a) { Text = "Notepad Clone No Menu"; txtbox = new TextBox(); txtbox.Parent = this; txtbox.Dock = DockS

我有以下代码:

class NotepadCloneNoMenu : Form
{
    protected TextBox txtbox;

    public NotepadCloneNoMenu(string a)
    {

        Text = "Notepad Clone No Menu";

        txtbox = new TextBox();
        txtbox.Parent = this;
        txtbox.Dock = DockStyle.Fill;
        txtbox.BorderStyle = BorderStyle.None;
        txtbox.Multiline = true;
        txtbox.ScrollBars = ScrollBars.Both;
        txtbox.AcceptsTab = true;
        txtbox.AppendText(a);
        txtbox.AppendText("\n");          
    }
}

class program1
 {

     public static void Main()
     {

        string result = "abc";

        while(true)
        {
            Application.Run(new NotepadCloneNoMenu(result));
     }
 }
 }
我想将字符串结果连续添加到文本框中,使其如下所示:

abc abc abc

诸如此类。然而,每次我这样称呼:

Application.Run(new NotepadCloneNoMenu(result));
它将重置文本框。我是否可以不断更新文本框?我对C#相当陌生,所以这让我很困惑

谢谢,
Phuc Pham

首先,您不断地关闭和打开一个应用程序。这就是它重置的原因。如果要运行无限循环,可能需要在应用程序内部运行它

在应用程序代码中,使用一些事件(可能适合您的计时器)将文本附加到文本框中。像这样:

public someEventOnTheForm (object sender, EventArgs e)
{
    txtBox.Text += "Notepad Clone to Menu";
}
还有两件事需要考虑:第一,如果你没有停止条件,这会一直填充内存,直到你用完为止


其次,默认情况下,windows窗体只在一个线程上运行。您将使用该线程更新文本框,因此当它追加文本时,表单本身将无法使用。如果开始花很长时间,它可能会在活动期间消失。如果希望表单可用,则需要第二个线程来处理该事件。

从更简单的内容开始,比如遵循制作WinForm应用程序的教程。这现在是WPF或控制台应用程序,正如您的标签所声称的,它是WinForms。看看你的代码的详细内容,你不觉得你在用相同的根形式运行一堆应用程序吗?不是说你应该这么做。谢谢雷南的回答。此表单正在等待从FX3(我正在使用的USB控制器)发送的调试消息。这就是为什么它没有停止条件。另外,一个线程是否足够,因为程序所做的只是发布它从FX3接收到的消息?您应该在问题中包含这些信息。如果每隔几秒钟就从调试器接收一次消息,那么它可能是可行的,是的。只要这些信息不会太快让你看不懂。我也会使用控制台应用程序,我已经让控制台应用程序工作了。然而,我的团队希望我使用表单,因为它看起来更好。我是否可以继续将新收到的消息附加到我的文本框中?使用后台工作线程捕获新文本,并在此线程中附加到文本框的文本。我真的很抱歉,您需要满足这样的用户,因为您需要做的事情比使用简单的控制台复杂得多。。。