iT邦幫忙

0

C# Visual studio Winform 基本問題

  • 分享至 

  • xImage

我目前的Winform 介面
https://ithelp.ithome.com.tw/upload/images/20220630/20149954nNNRdJD9Ng.png

我的程式碼 圖檔
https://ithelp.ithome.com.tw/upload/images/20220630/20149954tBC6io2B4o.png

我的程式碼 文字檔
public partial class Form1 : Form
{

    public Form1()
    {
        InitializeComponent();
      
    }
    private void button1_Click(object sender, EventArgs e)
    {
        Thread.Sleep(1000);
        textBox1.Text = "3";
     
        Thread.Sleep(1000);
        textBox1.Text = "5";
    }

    private void button2_Click(object sender, EventArgs e)
    {
        //Class1 obj = new Class1(this);
        // obj.CreateLabels();

        Thread.Sleep(1000);
        textBox1.Text = "2";
    }

   
}

我目前的想法,希望可以利用延遲反應,按下button1 可以讓textbox1 一開始顯示 3,過一秒之後,顯示 5

但實際上它是過了兩秒 直接顯示 5,

但如果我使用 button 2 ,卻可以讓textbox 顯示 2,

所以就不太懂,textbox .TEXT 的原理,是不是我漏了什麼程式,還是有什麼知識點,是我必須去學習的,

小弟C#新手,還請各位高手指教!

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
小山丘
iT邦新手 2 級 ‧ 2022-06-30 13:50:26

Thread.Sleep(1000);
textBox1.Text = "3";
等待一秒後,確實變3了,但這時候頁面並沒有刷新,會繼續執行下面程式

Thread.Sleep(1000);
textBox1.Text = "5";
執行完這段頁面才刷新,所以你看到的都會是5

可以用下面rofellos大提供的方法來刷新頁面。

Thread.Sleep(1000);
textBox1.Text = "3";
this.Refresh();

Thread.Sleep(1000);
textBox1.Text = "5";

0
小魚
iT邦大師 1 級 ‧ 2022-07-01 08:29:20

我是都用Application.DoEvents()

我要發表回答

立即登入回答