为什么我的标签字段在这个c#代码中给我一个错误

时间:2016-01-22 06:40:15

标签: c# label

我对c#有点新鲜,所以如果有人请告诉我为什么我会收到错误

  private void button2_Click(object sender, EventArgs e)
    {

        lblTaskManager.Text = null;
        RegistryKey objRegistryKey = Registry.CurrentUser.CreateSubKey(
               @"Software\Microsoft\Windows\CurrentVersion\Policies\System");
            try
            {
                if (objRegistryKey.GetValue("DisableTaskMgr") == null)
                    objRegistryKey.SetValue("DisableTaskMgr", "1");
                lblTaskManager.Text = ("Disabled");

            else
                objRegistryKey.DeleteValue("DisableTaskMgr");
                objRegistryKey.Close();
                lblTaskManager.Text = ("Enabled");
            }
            catch
            { }
        }
    }
} 

错误发生在("已禁用");它表明a}是必需的,但添加它不会改变任何东西。而且我如何在将来避免这种错误。

2 个答案:

答案 0 :(得分:2)

使用{}更正if:

            if (objRegistryKey.GetValue("DisableTaskMgr") == null)
            {
                objRegistryKey.SetValue("DisableTaskMgr", "1");
                lblTaskManager.Text = ("Disabled");
            }
            else
            {
                objRegistryKey.DeleteValue("DisableTaskMgr");
                objRegistryKey.Close();
                lblTaskManager.Text = ("Enabled");
            }

不需要()但不应该损害您的代码。

也许你应该将 objRegistryKey.Close(); 移到try catch的finally。

答案 1 :(得分:0)

那么,

  1. RegistryKey创建放入using并删除明确Close()
  2. {}if之后添加else
  3. 删除指定字符串周围的()
  4. 放弃那个噩梦try { ... } catch {}(忽略抛出的所有异常),再也不会再使用此类代码了。
  5. 这样的事情:

      using (RegistryKey objRegistryKey = Registry.CurrentUser.CreateSubKey(
               "@Software\Microsoft\Windows\CurrentVersion\Policies\System")) {
        if (objRegistryKey.GetValue("DisableTaskMgr") == null) {
          objRegistryKey.SetValue("DisableTaskMgr", "1");
          lblTaskManager.Text = "Disabled";
        }
        else {
          objRegistryKey.DeleteValue("DisableTaskMgr");
          lblTaskManager.Text = "Enabled";
        }
      }