如何在c#中不断更新文本框

本文关键字:更新 文本 | 更新日期: 2023-09-27 18:14:13

我有以下一段代码:

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)

等等。然而,每次我调用这个

Application.Run(new NotepadCloneNoMenu(result));

它将重置文本框。我是否可以不断更新文本框?我对c#相当陌生,所以这对我来说很困惑。

谢谢,永福Pham

如何在c#中不断更新文本框

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

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

public someEventOnTheForm (object sender, EventArgs e)
{
    txtBox.Text += "Notepad Clone to Menu";
}

还有两件事需要考虑:首先,如果你没有一个停止条件,这将继续填充内存,直到你用完它。

第二,windows窗体默认只在一个线程上运行。您将使用该线程更新文本框,因此,当它添加文本时,表单本身将不可用。如果开始花很长时间,它可能会在活动期间出现空白。如果你想让你的表单可用,你需要第二个线程来处理这个事件。