2016年10月18日 星期二

利用ApplicationSetting儲存與同步UI元件的狀態

一開始想做到的功能很簡單,當checkBox被勾選,一組功能就會被開啟
可以用code簡單的做到
但是記得公司裡的Y神有一招很fancy的招式可以做到


後來發現這招不只可以用在這裡,還可以儲存UI狀態,還不錯用

設定方式

1. 選定UI元件>Properties>(ApplicationSettings)(a) **注意,不是(DataBinding)
2. 選擇想Binding的屬性,常用得VS有列出來(b),其他的可以在(PropertyBinding)中選擇(c)
3. 將scope設定為User,並為屬性命名(d)
4. 成功之後(ApplicationSettings)中可以看到設定的屬性(f),並且可以在properties的該屬性旁邊看到一個icon(e)
5. 重複1~4設定另外一個相應的UI元件屬性

(a)
(b)
(c)
(d)
(e)
(f)

如果不小心誤新增了屬性需要刪除

在Solution Explorer中,專案>Properties>Settings.settings中可以去編輯。但是需要注意如果有修改,其搭當按底下有沒有出現紅色毛毛蟲,這表示剛剛的修改造成某些部分參照不到。
這時候Form的UI介面可能會打不開,可以到Form.Designer.cs去修改錯誤 global::projectName.Properties.Settings.Default.propertyName


The last but not the least

如果要把這次user輸入的值或data狀態儲存可以在某個地方,eg: FormClosed,but如果意外結束就會沒存到QQ~。加入
Properties.Settings.Default.Save(); 

下次開啟程式上次使用者的seting或應用程式狀態就會留住了!

Behind the Scense

其實VS在背後做的事情很簡單
1. 在project>Properties增加了Setting.settings
在ProjectName.Properties這個Namespace底下有個class Settings,並將所新增的Setting加入成為properties
2. 在初始化InitializeComponent()的時候將所指定的屬性設定為PMyProject.Properties.Settings.Default.mySetting;
ex
this.textBox_DarkCount.Text =
global::Tester.Properties.Settings.Default.DarkCount;

沒有留言:

張貼留言