推 horngsh:推1F 04/13 08:40
※ 引述《hatasum (我很可愛)》之銘言:
: 問題:
: 當richTextBox1_TextChange改變,到richTextBox1真正的Show出來過程中
: 如果有另一件事件(event)搶先觸發,則會比"richTextBox1真正的Show"還搶先進行
: 如果是這樣,是否有辦法讓"richTextBox1真正的Show"優先處理?
: 測試的程式碼:
: public Form1()
: {
: InitializeComponent();
: richTextBox1.TextChanged += new EventHandler(richTextBox1_TextChanged);
: }
: void richTextBox1_TextChanged(object sender, EventArgs e)
: {
忘了說,想嘗試的人可以試試看這裡加上 Application.DoEvents();
可以做到另一種很漂亮的效果
: DateTime bbb = DateTime.Now;
: while (DateTime.Now.Subtract(bbb).Milliseconds <= 100)
: {
: int aaa = 0;
: for (int i = 0; i < 1000000; i++)
: {
: aaa = 12345 * 123;
: // 這裡只是要讓richTextBox1_TextChanged慢一點離開
: }
: }
: }
: 依照這個程式,加上快速Keyin,結果會是
: "快速Keyin手放開後,會看到richTextBox1繼續動,呈現Delay似的輸出"
: 如果有辦法能讓richTextBox1的Show的事件優先處理,則會在
: "快速Keyin手放開後,richTextBox1的Show也停止"
: PS:不知道這樣大家看不看得懂...^^"
: 如果看得懂,不知道大家有甚麼意見或者能幫我解答這問題嗎??
: 麻煩大家為我解答"事件優先權"的問題^^
加上 Application.DoEvents() 與沒有加入Application.DoEvents()
可以發現到Keyin的柔暢度有所不同
是否有"改變事件優先權"的方法,而不是呼叫"所有事件都做完(也就是DoEvents)"
的方法?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.240.34.213