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

时间:2013-05-19 04:41:58

标签: 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 = 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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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