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

文字列の結果をテキストボックスに継続的に追加したいので、次のようになります。

abc abc abc

などなど。ただし、これを呼び出すたびに:

Application.Run(new NotepadCloneNoMenu(result));

テキストボックスをリセットします。テキストボックスを継続的に更新できる方法はありますか? 私はC#にかなり慣れていないので、これは私にとってかなり混乱しています。

ありがとう、Phuc Pham

4

1 に答える 1

0

まず第一に、アプリケーションを継続的に閉じたり開いたりしています。リセットするのはそれからです。無限ループを実行したい場合は、おそらくアプリケーション内で実行する必要があります。

アプリケーション コードで、何らかのイベント (おそらくタイマーが適している) を使用して、textBox にテキストを追加します。このような:

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

考慮すべき点が 2 つあります。1 つ目は、停止条件がない場合、メモリがなくなるまでメモリがいっぱいになり続けることです。

次に、Windows フォームはデフォルトで 1 つのスレッドでのみ実行されます。そのスレッドを使用してテキストボックスを更新するため、テキストを追加している間、フォーム自体は使用できなくなります。時間がかかり始めると、イベント中に空白になる可能性があります。フォームを使用できるようにする場合は、イベントを処理するための 2 つ目のスレッドが必要になります。

于 2013-05-19T04:47:16.070 に答える