關於作者:

本文由微軟最有價值專家 MVP 歐志信 提供。微軟十分感謝 MVP 主動地將他們的經驗與上百萬名其他技術使用者交流。MVP 歐志信 同時也將此篇文章放在他的部落格內,歡迎您按 此處 瀏覽 MVP 歐志信 更多的技術文章、經驗分享與觀點。

問題的來龍去脈

開發 Windows Forms 程式,想要在關閉程式時儲存控制項狀態,例如紀錄 TextBox 上的帳號與密碼資訊,該如何實現?





問題的發生原因

想要儲存使用者輸入的資料方法有很多,例如透過 *.xml 與 *.config。在此我們透過應用程式設定來儲存使用者輸入的資料,當關閉 Windows Forms 程式時將 TextBox 資料做儲存,當程式開啟時,將儲存的資料讀取出來。

想要了解更多資訊,請參考 MSDN Windows Form 的應用程式設定 提供的說明。

問題的解決方法

1. 開啟方案,在您的 Windows Forms 專案上按滑鼠右鍵,選擇【屬性】。





2. 選擇【設定】頁籤,會看到應用程式設定相關資訊,由於我們要儲存帳號與密碼兩個 TextBox 的資料,因此建立兩個 Setting,名稱分別是 UsernameSetting 與 PasswordSetting,型別是字串 string,範圍選擇 User 可做讀取跟儲存,假如範圍設定成 Application 的話則只能讀取不能儲存。





3. 加入表單 Load 事件與 FormClosing 事件,然後在 FormClosing 事件撰寫儲存設定程式碼,在 Load 事件撰寫讀取設定程式碼

C#

private void DemoForm_Load(object sender, EventArgs e)
{
// 在 Load 事件撰寫讀取設定程式碼
// 讀取設定到帳號 TextBox.Text
this.txtUserName.Text = wfAppDemo.Properties.Settings.Default.UsernameSetting;
// 讀取設定到密碼 TextBox.Text
this.txtPassword.Text = wfAppDemo.Properties.Settings.Default.PasswordSetting;
}

private void DemoForm_FormClosing(object sender, FormClosingEventArgs e)
{
// 在 FormClosing 事件撰寫儲存設定程式碼
// 將帳號 TextBox.Text 儲存到 UsernameSetting
wfAppDemo.Properties.Settings.Default.UsernameSetting = this.txtUserName.Text;
// 將密碼 TextBox.Text 儲存到 PasswordSetting
wfAppDemo.Properties.Settings.Default.PasswordSetting = this.txtPassword.Text;
wfAppDemo.Properties.Settings.Default.Save();
}



VB 

Private Sub DemoForm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
' 在 Load 事件撰寫讀取設定程式碼
' 讀取設定到帳號 TextBox.Text
Me.txtUserName.Text = My.Settings.UsernameSetting
' 讀取設定到密碼 TextBox.Text
Me.txtPassword.Text = My.Settings.PasswordSetting
End Sub

Private Sub DemoForm_FormClosing(sender As System.Object, e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
' 在 FormClosing 事件撰寫儲存設定程式碼
' 將帳號 TextBox.Text 儲存到 UsernameSetting
My.Settings.UsernameSetting = Me.txtUserName.Text
' 將密碼 TextBox.Text 儲存到 PasswordSetting
My.Settings.PasswordSetting = Me.txtPassword.Text
End Sub



其他相關資訊


請讓我們知道

還滿意我們寫的內容嗎?無論您是遇到了以下任何一種情況:
「太好了!問題解決了。」
「問題沒有解決,我有更好的建議。」
都歡迎您利用本篇文章底部的意見調查表,寫下您寶貴的意見。也期待您的鼓勵,讓我們為您創造更多實用的技術文章。

需要更多協助?

擴展您的技能
探索訓練
優先取得新功能
加入 Microsoft 測試人員

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?

感謝您的意見反應!

×