none
[VS2008]UserControl Load event question. RRS feed

  • 問題

  • 請問當我在Form.load及Usercontrol.load寫入一段code時,當我要view designer時在devlop mode下,vs2008也是會自動去執刪load下的程式,會造成程式因為還沒進入debug mode而產生exception?請問要怎麼才能關閉在devlop mode也會執行load的問題?謝謝!
    2010年11月19日 上午 01:47

解答

  • 通常這類的問題和順序有關, 例如你的UserControl在建立執行個體或在Load階段時會需要某個非實值型別的屬性實體化, 如果你並未給該屬性一個預設值, 則當你直接使用畫面編輯工具拉到Form上的時候就會馬上產生NullRefrence的Execption
    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年11月20日 上午 05:34
    版主

所有回覆

  • 1. 沒進入 debug Mode是啥意思 ?

    2. 最簡單的方式應該是不要把 Usercontrol用拉的放在畫面上, 而是在Form Load 事件之後在程式碼中產生

    3. 因為沒有必要的Code, 所以我只好亂猜.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年11月19日 上午 02:32
    版主
  • 1. 沒進入 debug Mode是啥意思 ?

    =>我可能表達不好;就是在VS裏執行『Start Debugging(F5)』

    2. 最簡單的方式應該是不要把 Usercontrol用拉的放在畫面上, 而是在Form Load 事件之後在程式碼中產生

    =>小弟有個疑問?!如果不把UserControl放在畫面上,又怎能知UserControl的畫面與Form的排版是否正確呢?

    3. 因為沒有必要的Code, 所以我只好亂猜.

    =>我寫了一支shared的common function,需要在Form還是usercontrol在load時就要執行,但執行有start debugging,只要把畫面切到form/usercontrol的畫面時,vs就會自動去執行load function,就會出現exception。


    2010年11月19日 上午 06:04
  • 2. 很久很久以前, 我們寫程式都是沒有視覺化工具的, 還是可以把畫面擺得整整齊齊的, 工具只是方便你使用, 但並非沒有工具啥都不能用, 除非是沒有編譯器可用的狀態比較大條.

    3. 麻煩可以貼出有exception的程式碼與exception的內容嗎 ?

    PS: 張貼文章應注意事項及應提供資訊 這篇可以讀一下, 裡面有教發問的技巧

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年11月19日 下午 02:01
    版主
  • 通常這類的問題和順序有關, 例如你的UserControl在建立執行個體或在Load階段時會需要某個非實值型別的屬性實體化, 如果你並未給該屬性一個預設值, 則當你直接使用畫面編輯工具拉到Form上的時候就會馬上產生NullRefrence的Execption
    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年11月20日 上午 05:34
    版主
  • 我不太能意會你的狀況,最好配合圖說。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年11月20日 下午 12:57
  • 抱歉..拖這麼久才回覆。
    我以這個例子來說明;我現在create二個project
    一個是Windows Forms Application(WinApp);
    另一個是Windows Forms Control Library(UCWinForm);
    在UCWinForm裏的FormLoad event我加入這段code

    Private Sub ucControlForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     Try
      MessageBox.Show("this is user-control form load")
     Catch ex As Exception
      MessageBox.Show(ex.ToString, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
     End Try
    End Sub
    

    然後從WinApp用拖拉的方式把UCWinForm加進來,進當我只要點選WinApp裏form時,
    它就會自動的去啟動ucControlForm_Load,而顯示message:this is user-control form load;
    我想問的是有沒有辦法在沒run的情況下,只要讓VS2008去執行ucControlForm_Load event.

    謝謝指教

    2010年11月30日 下午 01:45
  • 這是一定會做的動作, 當你將UserControl拉進來它就會觸發Load事件, 也許用屬性可以避開

    ex:

    (a) UserContorl

    Public Class UserControl1
        Private m_form As Form
        Public Property _form As Form
            Get
                Return m_form
            End Get
            Set(ByVal value As Form)
                m_form = value
                showmessage()
            End Set
        End Property
        Private Sub UserControl1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            showmessage()
        End Sub
        Private Sub showmessage()
            Try
                If Not _form Is Nothing Then
                    MessageBox.Show("this is user-control form load")
                End If

            Catch ex As Exception
                MessageBox.Show(ex.ToString, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        End Sub
    End Class

    (b) Form

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.UserControl11._form = Me
        End Sub

    這樣的話, 當你將UserControl拉進來時, 因為 Usercontrol的 _Form屬性是Nothing (Null), 它就不會執行Showmessage() Method中的Messagebox.show()

    直到你的Form1 Load時指派了參考指標給UserControl的 _From屬性就會執行Showmessage() Method中的Messagebox.show()

     

     

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年11月30日 下午 07:30
    版主