none
想知道Form1.Designer.vb的細節 RRS feed

  • 問題

  • 我在學校使用Microsoft Virtual Basic 2008 Express開發一些"作業"
    大概都是:檔案>新增專案>windows form 應用程式 就開始寫程式了

    老師都說不要動到form1.designer.vb的程式,可是我還是想知道他程式的功能
    雖然可能對各位大大都只是小常識,但希望能不吝指教
    1.
    <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    
    
    第一行就看不懂

    2.
    Partial
     Class
     Form1
        Inherits
     System.Windows.Forms.Form
    
    End
     Class
    
    
    一個繼承System.Windows.Forms.Form的類別,叫做Form1
    對嗎?

    3.
        'Form 覆寫 Dispose 以清除元件清單。
    
        <System.Diagnostics.DebuggerNonUserCode()> _
        Protected
     Overrides
     Sub
     Dispose(ByVal
     disposing As
     Boolean
    )
            Try
    
                If
     disposing AndAlso
     components IsNot
     Nothing
     Then
    
                    components.Dispose()
                End
     If
    
            Finally
    
                MyBase
    .Dispose(disposing)
            End
     Try
    
        End
     Sub
    
    
    雖然註解有寫,但不太了解甚麼叫"清除元件清單"?
    是指清除所有控制項嗎?

    4.
        '為 Windows Form 設計工具的必要項
    
        Private
     components As
     System.ComponentModel.IContainer
    
    這註解可以理解,沒有components 就不能用所見及所得的設計界面了

    5.
        '注意: 以下為 Windows Form 設計工具所需的程序
    
        '可以使用 Windows Form 設計工具進行修改。
    
        '請不要使用程式碼編輯器進行修改。
    
        <System.Diagnostics.DebuggerStepThrough()> _
        Private
     Sub
     InitializeComponent()
            components = New
     System.ComponentModel.Container
            Me
    .AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
            Me
    .Text = "Form2"
    
        End
     Sub
    
    
    
    一些控制項的設定都在Private Sub InitializeComponent()裡面
    看不懂<System.Diagnostics.DebuggerStepThrough()> _的功能

    不懂<System.xxx....>這種寫法






    只是普通的宅宅
    2009年8月25日 上午 03:37

解答

  • ... 請翻閱線上手冊,這是設定特定建構子屬性的一種方式。

    已 <System.Diagnostics.DebuggerStepThrough()> _ 為例,線上手冊是這麼說:
    當套用至類別 (Class) 時,編譯器會從預設虛構建構函式 (Constructor) 隱含地呼叫元件初始化方法。

    語法範例:
    <AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple := False, Inherited := False)> _
    Public NotInheritable Class DesignerGeneratedAttribute _
    	Inherits Attribute
    所以 () 表示裡面的參數都省略,使用預設值。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    • 已標示為解答 R.R 2009年8月25日 下午 01:37
    2009年8月25日 上午 03:48

所有回覆

  • ... 請翻閱線上手冊,這是設定特定建構子屬性的一種方式。

    已 <System.Diagnostics.DebuggerStepThrough()> _ 為例,線上手冊是這麼說:
    當套用至類別 (Class) 時,編譯器會從預設虛構建構函式 (Constructor) 隱含地呼叫元件初始化方法。

    語法範例:
    <AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple := False, Inherited := False)> _
    Public NotInheritable Class DesignerGeneratedAttribute _
    	Inherits Attribute
    所以 () 表示裡面的參數都省略,使用預設值。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    • 已標示為解答 R.R 2009年8月25日 下午 01:37
    2009年8月25日 上午 03:48
  • 補充:
    在 VS2003 前,Form1.Designer.vb 的內容是直接存放於 Form1.vb 的。

    VS2005/2008 也支援這些內容存放於 Form1.vb ,大部分是 VS2003 專案升級上來才會有這種情形,新專案是一律拆成兩個檔,而有些專案升級時有點問題,會發生 Form1.Designer.vb 內有錯誤的新內容,而跟 Form1.vb 內的相衝,就需要人工編輯,把它從 Form1.vb 移動到 Form1.Designer.vb 中。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年8月25日 上午 03:52
  • 我也不太瞭解你上論壇這麼多次了, 還學不會先看看MSDN文件怎麼說?
    1.  Inherits : MSDN有個章節是講 Inherits 陳述式
    2. Dispose : 總可以先查查 Form.Dispose方法 是幹嘛的吧?
    3. [DebuggerStepThroughAttribute 類別]

    至於為何會<>這樣寫, 這問題就可以接受, 不過答案也在MSDN文件庫中
    [.NET Framework 開發人員手冊 使用屬性擴充中繼資料 ]

    請關心自己的問題,不要問了就放空;這是對別人與自己的尊重
    2009年8月25日 上午 04:00
    版主