现在的位置: 首页 > 综合 > 正文

【转】C# 注册表简单操作

2013年01月04日 ⁄ 综合 ⁄ 共 2467字 ⁄ 字号 评论关闭
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         }

 

       然后在窗体的构造函数中调用即可。

重新运行程序,加载成功。

 

 

 

抱歉!评论已关闭.