那就讓我們繼續看下去囉~~~
居裡貓之前在做一些程式作業練習的時候有遇到一些問題,
後來在網路上拜讀了一些先進的教學後,
就寫了這個小程式大略的說明一下問題,跟解決方法。
問題大概是這樣,假設我們今天要使用VB.NET來寫一個程式,
然後我們會用一個按鈕 Button 去控制表單上的 Label 來改變他顯示的 Text 值,
此時 Button Click 裡面又要使用執行序 Thread 來呼叫另一段程式去改變 Label Text 值~
講的很清楚大家看的很模糊,那就先來看看小寫的小程式截圖吧~
首先是這個小程式的長相啦!!
看到長相大家應該可以稍稍理解我講的問題了吧~
要控制的就是中間那個 Label1 的 Text 值~
而左邊 "Wrong" 這個按鈕 Button 呢,就是會出現錯誤的按鈕,
錯誤之後會有這樣的訊息:
好,這個當然是我另外讓他跳出來的 MessageBox ,
那解決這個問題之後就可以安然的控制 Label1 的 Text 值啦~
就像這樣!居裡貓只是簡單的上他 +1 而已~
廢話那麼多接著就來看看大家關心的程式碼啦!
------------------------------------------------------------------------------------------------------------------------
- '接著就是從程式碼中了解大概做了什麼事情可以解決問題
- '
- Imports System.Threading
- Public Class Form1
- '要使用的東西就在這邊先定義好,變動的 count,使用的執行序 threadtest2
- Dim count As Integer = 0
- Dim threadtest2 As Thread
- Private Sub labeltext()
- '這段程式就是執行序委派工作的對象,嘗試去把 Label1 的 Text 值做改變
- Try
- count += 1
- Label1.Text = count
- Catch ex As Exception
- MessageBox.Show(ex.Message.ToString)
- End Try
- End Sub
- Private Sub Wrong_btn_Click(sender As Object, e As EventArgs) Handles Wrong_btn.Click
- '這段就是 "Wrong" 按鈕啟動執行序的部分
- Try
- '這邊有點特別的,執行序在這邊作定義,應該不會是主要問題點
- '然後在這邊委派工作跟啟動執行序
- Dim threadtest As New Thread(AddressOf labeltext)
- threadtest.Start()
- Catch ex As Exception
- MessageBox.Show(ex.Message.ToString)
- End Try
- End Sub
- '--------我是分割線,上面的部分是錯誤按鈕的內容,下面的部份成功按鈕的內容
- Private Sub Correct_btn_Click(sender As Object, e As EventArgs) Handles Correct_btn.Click
- Try
- '這裡的執行序在最上面就定義好了 ,所以也是做委派工作跟啟動執行序
- threadtest2 = New Thread(AddressOf labeltext2)
- threadtest2.Start()
- Catch ex As Exception
- MessageBox.Show(ex.Message.ToString)
- End Try
- End Sub
- Private Sub labeltext2()
- '這邊的 If 判斷式就是可不可以成功的關鍵
- If Label1.InvokeRequired Then
- Me.Invoke(New MethodInvoker(AddressOf labeltext2))
- Else
- count += 1
- Label1.Text = count
- End If
- End Sub
- End Class
------------------------------------------------------------------------------------------------------------------------
以上就是居裡貓的分享介紹,對於程式語法的一些解釋、說明,
還請大家自己去查一下 MSDN 的說明比較正確!
那希望今天居裡貓這個小練習也可以幫助到大家!
也感謝網路上教學的先進們!
以上!
沒有留言:
張貼留言