【转】C# 注册表简单操作
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);
}
}
}
{
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());
}
{
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 }
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 {
2 {
........
7 base.Dispose(disposing);
8 if (comboBox1.SelectedIndex != -1)
9 SaveColor();
10 }
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 }
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 }
然后在窗体的构造函数中调用即可。
重新运行程序,加载成功。