TextBox不按代码C#显示初始文本

时间:2014-01-16 17:31:16

标签: c# textbox

我想弄清楚为什么当我点击button1时,我从未在textBox1中看到“AAAA”。我只在一个Form上有一个按钮和一个textBox。光标转到WaitCursor很好。如果我在WaitCursor代码和For语句之间添加一个标准消息框,我会看到“AAAA”吗?为什么在示例1(下面)中从未见过“AAAA”?是的,我是编程的新手,很抱歉,如果这很明显的话。如果我使用Breakpoint textBox1.Text确实等于“AAAA”但从未在示例1中显示。

    //Example 1 without message box:
    private void button1_Click(object sender, EventArgs e)
    {
        textBox1.Text = "AAAA";
        this.Cursor = Cursors.WaitCursor;
        for (int i = 0; i < 1000000001; i++)
        {

        }
        textBox1.Text = "BBBB";
        this.Cursor = Cursors.Default;
    }
    //Example 2 with message box:
    private void button1_Click(object sender, EventArgs e)
    {
        textBox1.Text = "AAAA";
        this.Cursor = Cursors.WaitCursor;
        MessageBox.Show("Test");
        for (int i = 0; i < 1000000001; i++)
        {

        }
        textBox1.Text = "BBBB";
        this.Cursor = Cursors.Default;
    }

2 个答案:

答案 0 :(得分:4)

第一个代码块中的

:您无法看到,因为AAAA将在循环后立即替换为BBBB

在您的第二个代码块中:您可以看到AAAA,直到您确认消息框。

答案 1 :(得分:2)

不要使用for循环使用它,而是使用方法async:

private async void button1_Click(object sender, EventArgs e)
{
    textBox1.Text = "AAAA";
    this.Cursor = Cursors.WaitCursor;
    await Task.Delay(5000); // wait 5 second asynchronously
    textBox1.Text = "BBBB";
    this.Cursor = Cursors.Default;
}

Actualy你的AAAA显示在textBox中,但是你看不到它。因为它发生得非常快。第二个例子你看AAAA因为它正在停止MessageBox而且不会循环,除非你关闭你的的MessageBox。