close

再來是 如何 宣告 與使用

首先 我們需要宣告三個物件


    Public EnumSettingData As MyConfig.Sections                                                  '記憶取得的環境設定
    Public ConfigFile As New System.Configuration.ExeConfigurationFileMap()       '設定檔的路徑與相關
    Public Config As System.Configuration.Configuration                                        '取得或設定 環境設定用

再來是在 程式啟動時  呼叫相關的 Function


        MyConfig.Sections.SectionName = "SPC_RE02-01"
        Dim ExeFilePath As String = String.Format("{0}\Resources\{1}.Config", My.Application.Info.DirectoryPath, "SPC_RE02-01")    '設定檔路徑
              

        ConfigFile.ExeConfigFilename = ExeFilePath
        Config = System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(ConfigFile, System.Configuration.ConfigurationUserLevel.None)  <---載入設定

        Try
            If Config.Sections(MyConfig.Sections.SectionName) Is Nothing Then
                EnumSettingData = New MyConfig.Sections
                Config.Sections.Add(MyConfig.Sections.SectionName, EnumSettingData)
            Else
                EnumSettingData = CType(Config.Sections(MyConfig.Sections.SectionName), MyConfig.Sections)        '將設定檔 輸入到 可分析的 物件
            End If
        Catch ex As Exception
            MsgBox("Err 1001: Enum initalization Error !! ")
        End Try
        If Not IO.File.Exists(ExeFilePath) Then
            If MsgBox("Are you want create new file ? " + vbCrLf + "Be care . It will wipe old and creat new one !!!", MsgBoxStyle.YesNo) Then
                EnumSettingData.SectionInformation.ForceSave = True
                EnumSettingData.Path.LogPath.Text = "D:\Log"
                Config.Save(System.Configuration.ConfigurationSaveMode.Full)    '如果設定檔不存在 寫一個新的
            End If
        End If

 

上面簡單說  就是 依照路徑  與 Section Name 將設定檔載入........

如果沒有 就見一個新的 ......(這是一個好偷懶方式......應該沒多少人想自己親自keyin XML 的設定檔.....)

最後 如果 設定檔 在程式中 有修改要寫入

  EnumSettingData.SectionInformation.ForceSave = True
  Config.Save(System.Configuration.ConfigurationSaveMode.Full)

依樣就會將 設定檔給複寫

 

最後來做個總結  與  範例程式操作的介紹

 

說了一堆   恩 希望各位看官看的了解....

也說了一堆好處,但壞處呢 ?

其實 這也並不是非常完美 目前用到現在 有幾個比較麻煩的地方

1. 每個資料型態都要先定義, 恩  物件化的後果.....有點麻煩  但常用的定義過後以後就可以再用

2.資料量必須符合。 設定檔中的資料 必須與 Class中的定義數量依樣,不然就導不進來。如果有對 Class有作任何的增修  

   相對應的 config 就必須修改,不然就全部進不來...恩也是 物件化的後果

3.程式碼稍長..........恩 沒 IINI的 API 那樣直覺,但效能較佳  算 抵銷

 

整體來說  如果只有少數的設定需要寫入文字檔,並不太需要 用這個 類別 來實作 (程式碼都比設定檔多....)

但相對的,當有大量 重複設定的   這個 是很實用的一種方式

 

 

 

附上的程式碼  主要就是 config 檔的 Class 與 呼叫

在 Chart 圖上 右鍵  選 setting 可以進入 編輯模式

改完後  選 ok 回到主表單 選 Save 就會把 設定檔存入

 

這邊就可以看到  當有複雜的設定檔要存檔時  這個 類別 就發揮很大的功效

 

https://docs.google.com/open?id=0B7UGRMCI7PjpVHJRSzNEbndsVnM

 

 

有興趣的朋友  在 Code Project 有更多的介紹

http://www.codeproject.com/Articles/5304/Read-Write-XML-files-Config-files-INI-files-or-the

 

 

 

 

 

 

 

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Rh 的頭像
    Rh

    程式狂想曲

    Rh 發表在 痞客邦 留言(0) 人氣()