iT邦幫忙

0

vb.net button一次只能執行一個事件嗎?

我在button裡放了下面的程式
我希望button一按下去 Image1就可以顯現出來
但加了if... end if 裡的程式後,Image1完全都不動
如果沒加if... end if 裡的程式 Image1就可以執行
為什麼呢?難道vb.net一次只能執行一個事件嗎?
各位大大~~求救丫

    Private Sub ImageButton3_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageButton3.Click
        Image1.Visible = True
        System.Windows.Forms.Application.DoEvents()
        If Rabut_LandArea.Checked Then
            ZoneAreaData()
        ElseIf Rabut_IsPublic.Checked Then
            PublickAreaData()
        ElseIf Rabut_DecideInfo.Checked Then
            DecideInfoData()
        ElseIf Rabut_ApplyCase.Checked Then
            ApplyCaseData()
            Image1.Visible = True
        ElseIf Rabut_CityPlan.Checked Then
            CityPlanAreaData()
        End If

2 個回答

12
bcc958
iT邦新手 5 級 ‧ 2008-12-23 10:31:05
最佳解答

請參考
http://ithelp.ithome.com.tw/question/10015454

你們問的內容一模一樣呢

0
stoneck
iT邦新手 2 級 ‧ 2009-01-20 11:59:06

問題的重點不是在於副程式的寫法,
而是因為系統運作狀況, 還來不及將畫面 Refresh 秀出 image1.visible 的結果,
就已經開始付程式的運作,
副程式因為吃掉了大半的 CPU 資源, 那 CPU 當然沒空閒來重整畫面,
所以就會等到附程式做完才接著做 image1 顯示的動作.

要改善這個問題, 我們只要在副程式開始運作之前,
強迫系統一定要先做一次畫面的 refrersh, 那狀況就解決了.

把程式開頭改成以下方式 :
Private Sub ImageButton3_Click(ByVal sender As System.Object, ByVal _
e As System.Web.UI.ImageClickEventArgs) Handles _
ImageButton3.Click
Image1.Visible = True

'增加這個會自動消失的回應訊息, 強迫系統一定要先做畫面的更新,
' 然後才進入副程式運作.
'參數 1 是等待 1 秒鐘後結束, 10 是不要真正秀出這個 msgbox , 以避免在畫
' 面上造成殘留影像 !!
Call CreateObject("WScript.Shell").Popup("任何訊息內容", 1, _
"訊息Title", 10)

If Rabut_LandArea.Checked Then................................
...........................................................
...........................................................

我要發表回答

立即登入回答