|
บทความนี้อธิบายถึงวิธีการเก็บข้อมูลแบบกำหนดเองในแฟ้มการตั้งค่าคอนฟิก (.config ของโปรแกรม) ที่คุณสามารถเรียกดูได้ในภายหลัง ในระหว่างการรันไทม์ของแอพพลิเคชันที่เกี่ยวข้อง มีประโยชน์เมื่อคุณต้องกำหนดข้อมูลที่เกี่ยวข้องกับแอพพลิเคชัน (แปลจาก Microsoft 5555+ ... https://support.microsoft.com/th-th/help/815786/how-to-store-and-retrieve-custom-information-from-an-application-confi)- <?xml version="1.0" encoding="utf-8"?>
- <configuration>
- <appSettings>
- <add key="Server" value="(local)" />
- <add key="Database" value="G2GNETDB" />
- <add key="uid" value="admin" />
- <add key="pwd" value="admin" />
- <add key="providerType" value="Sql" />
- <add key="databaseVersion" value="MSSQL2016" />
- </appSettings>
- </configuration>
คัดลอกไปที่คลิปบอร์ด รูปร่างหน้าตาของไฟล์ app.config ก็จะอยู่ในรูปแบบของ XML (eXtensible Markup Language) อีกแล้วครับท่าน ...
อันดับแรกต้องอ้างอิง Library หรือ การเรียกใช้ Reference --> System.Configuration
- '<?xml version="1.0" encoding="utf-8"?>
- '<configuration>
- '<appSettings>
- '<add key="Server" value="(local)" />
- '<add key="Database" value="G2GNETDB" />
- '<add key="uid" value="admin" />
- '<add key="pwd" value="admin" />
- '<add key="providerType" value="Sql" />
- '<add key="databaseVersion" value="MSSQL2016" />
- '</appSettings>
- '</configuration>
- Try
- Dim reader As New System.Configuration.AppSettingsReader
- txtServer.Text = reader.GetValue("server", GetType(String))
- txtDatabase.Text = reader.GetValue("database", GetType(String))
- txtUID.Text = reader.GetValue("uid", GetType(String))
- txtPwd.Text = reader.GetValue("pwd", GetType(String))
- btnSave.Enabled = True
- Catch ex As Exception
- MessageBox.Show(ex.Message, "Read Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
- End Try
คัดลอกไปที่คลิปบอร์ด มีอยู่หลายวิธีในการเรียกข้อมูลออกมาจาก app.config สำหรับตัวอย่างนี้แอดมินใช้ Class AppSettingsReader เพื่อเลือกการอ่านเฉพาะค่าออกมาเลย ... (https://msdn.microsoft.com/en-us/library/system.configuration.appsettingsreader(v=vs.110).aspx)
- Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
- Dim settings As KeyValueConfigurationCollection = config.AppSettings.Settings
- Try
- '// update SaveBeforeExit
- settings("server").Value = txtServer.Text
- settings("database").Value = txtDatabase.Text
- settings("uid").Value = txtUID.Text
- settings("pwd").Value = txtPwd.Text
- '//save the file
- config.Save(ConfigurationSaveMode.Modified)
- ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name)
- MessageBox.Show("Update Setting.", "Report status", MessageBoxButtons.OK, MessageBoxIcon.Information)
- btnSave.Enabled = False
- Catch ex As Exception
- MessageBox.Show(ex.Message)
- End Try
คัดลอกไปที่คลิปบอร์ด สำหรับการ Save ข้อมูลกลับเข้าไปใน app.config
IMPORTANT - สำคัญเชียวน่ะจะบอกให้
เมื่อเราสั่งทดสอบโปรแกรมด้วยการกด F5 หากเกิดการเปลี่ยนแปลงใดๆของข้อมูล เราจะมองไม่เห็น เพราะว่าตำแหน่งของไฟล์ Execute กับไฟล์ app.config อยู่คนละตำแหน่งกัน ... การใช้วิธีนี้ต้อง Build Project ก่อน จากนั้น App.Config มันจะถูกคัดลอกนำไปไว้ยังโฟลเดอร์ Debug/Release (ขึ้นกับว่าเราไปกำหนดให้ Execute ที่ไหน) จากนั้นมันก็สร้าง ชื่อโปรเจค.exe.config เช่นตัวอย่างนี้คือ MyAppConfig ... เราจะรันเพื่อให้สามารถเปลี่ยนแปลงข้อมูลได้ที่นี่
มาดูโค้ดฉบับเต็ม ...
- ' / --------------------------------------------------------------------------------
- ' / Developer : Mr.Surapon Yodsanga (Thongkorn Tubtimkrob)
- ' / eMail : thongkorn@hotmail.com
- ' / URL: http://www.g2gnet.com (Khon Kaen - Thailand)
- ' / Facebook: https://www.facebook.com/g2gnet (For Thailand)
- ' / Facebook: https://www.facebook.com/commonindy (Worldwide)
- ' /
- ' / Purpose: Using app.config for user defined @runtime parameters.
- ' / Microsoft Visual Basic .NET (2010)
- ' /
- ' / This is open source code under @CopyLeft by Thongkorn Tubtimkrob.
- ' / You can modify and/or distribute without to inform the developer.
- ' / --------------------------------------------------------------------------------
- Imports System.Configuration
- Public Class frmConfig
- Private Sub btnLoad_Click(sender As System.Object, e As System.EventArgs) Handles btnLoad.Click
- '<?xml version="1.0" encoding="utf-8"?>
- '<configuration>
- '<appSettings>
- '<add key="Server" value="(local)" />
- '<add key="Database" value="G2GNETDB" />
- '<add key="uid" value="admin" />
- '<add key="pwd" value="admin" />
- '<add key="providerType" value="Sql" />
- '<add key="databaseVersion" value="MSSQL2016" />
- '</appSettings>
- '</configuration>
- Try
- Dim reader As New System.Configuration.AppSettingsReader
- txtServer.Text = reader.GetValue("server", GetType(String))
- txtDatabase.Text = reader.GetValue("database", GetType(String))
- txtUID.Text = reader.GetValue("uid", GetType(String))
- txtPwd.Text = reader.GetValue("pwd", GetType(String))
- btnSave.Enabled = True
- Catch ex As Exception
- MessageBox.Show(ex.Message, "Read Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
- End Try
- End Sub
- Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click
- Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
- Dim settings As KeyValueConfigurationCollection = config.AppSettings.Settings
- Try
- '// update SaveBeforeExit
- settings("server").Value = txtServer.Text
- settings("database").Value = txtDatabase.Text
- settings("uid").Value = txtUID.Text
- settings("pwd").Value = txtPwd.Text
- '//save the file
- config.Save(ConfigurationSaveMode.Modified)
- ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name)
- '// Or use sub program from MSDN.
- '//AddUpdateAppSettings("database", txtDatabase.Text)
- MessageBox.Show("Update Setting.", "Report status", MessageBoxButtons.OK, MessageBoxIcon.Information)
- btnSave.Enabled = False
- Catch ex As Exception
- MessageBox.Show(ex.Message)
- End Try
- End Sub
- '// If you want to learn more.
- '// https://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings(v=vs.110).aspx
- Sub AddUpdateAppSettings(key As String, value As String)
- Try
- Dim configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
- Dim settings = configFile.AppSettings.Settings
- If IsNothing(settings(key)) Then
- settings.Add(key, value)
- Else
- settings(key).Value = value
- End If
- configFile.Save(ConfigurationSaveMode.Modified)
- ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name)
- Catch e As ConfigurationErrorsException
- MessageBox.Show("Error writing app settings: " & vbCrLf & e.Message)
- End Try
- End Sub
- Private Sub frmConfig_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
- btnSave.Enabled = False
- End Sub
- Private Sub btnExit_Click(sender As System.Object, e As System.EventArgs) Handles btnExit.Click
- Me.Close()
- End Sub
- Private Sub frmConfig_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
- Me.Dispose()
- Application.Exit()
- End Sub
- End Class
คัดลอกไปที่คลิปบอร์ด ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010)
|
ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง
คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน
x
|