1. 註冊表介紹
註冊表查看工具regedit.exe。最進階主要包括5個鍵。
另外還有2個隱藏的,一般不常用。
2. 註冊表操作
.NET操作註冊表主要用到兩個類,命名空間為Microsoft.Win32。
- RegistryKey:針對具體鍵的操作,包括3個唯讀屬性和一些列的方法,分別添加、刪除和設定子鍵和值。
- Registry:主要包括7個唯讀屬性,分別對應可能存在的7個頂級鍵。
3. 註冊表執行個體
執行個體很簡單:通過下拉框選擇顏色,作為表單的背景色。當關閉視窗時自動儲存設定。
² 頁面配置:建立Windows Application程式,在表單上添加一個ComboBox控制項;
² 初始化顏色下拉框:在這裡我們要利用反射來擷取標準色列表。
private void DisplayColor()
{
Type colortype = typeof(Color);
PropertyInfo[] info = colortype.GetProperties();
foreach (PropertyInfo pi in info)
{
if (pi.PropertyType == typeof(Color)&&pi.Name !="Transparent")
{
comboBox1.Items.Add(pi.Name);
}
}
}
注意:由於表單背景色不能設定為透明,因此要排除”Transparent”。
² 改變選擇時,表單顏色隨之改變。在ComboBox控制項添加事件:
SelectedIndexChanged
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
this.BackColor = Color.FromName(comboBox1.SelectedItem.ToString());
}
² 關閉表單時,儲存背景色;
1 private void SaveColor()
2 {
3 try
4 {
5 RegistryKey colorkey = Registry.CurrentUser.CreateSubKey(@"SoftWare\Cathy\Colors");
6 colorkey.SetValue("BackColor", comboBox1 .SelectedItem.ToString ());
7 colorkey.Close();
8 }
9 catch (Exception ex)
10 {
11 MessageBox.Show("載入失敗" + ex.Message.ToString());
12 }
13 }
然後,我們重寫表單的Dispose()事件,在釋放表單對象時,調用以上方法。
Dispose
1 protected override void Dispose(bool disposing)
2 { ........
7 base.Dispose(disposing);
8 if (comboBox1.SelectedIndex != -1)
9 SaveColor();
10 }
此時,運行程式,如所示:
開啟註冊表,找到相應的索引值:
² 開啟表單時,載入使用者佈建的背景色。
1 private void GetColor()
2 {
3 try
4 {
5 RegistryKey colorkey = Registry.CurrentUser.OpenSubKey(@"SoftWare\Cathy\Colors");
6 string ColorName = (string)colorkey.GetValue("BackColor");
7 Color color = Color.FromName(ColorName);
8 this.BackColor = color;
9 comboBox1.SelectedItem = ColorName;
10 colorkey.Close();
11 }
12 catch (Exception ex)
13 {
14 MessageBox.Show("擷取失敗" + ex.Message.ToString());
15 }
16 }
然後在表單的建構函式中調用即可。
重新運行程式,載入成功。