0

我有以下代码:

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));
     }
 }
 }

我想不断地将字符串结果附加到文本框,所以它看起来像这样:

美国广播公司 美国广播公司

等等等等。但是,每次我调用这个:

Application.Run(new NotepadCloneNoMenu(result));

它将重置文本框。无论如何我可以不断更新文本框吗?我对 C# 相当陌生,所以这让我很困惑。

谢谢, Phuc Pham

4

1 回答 1

0

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

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

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

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

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

于 2013-05-19T04:47:16.070 回答