Listview项始终为null

时间:2015-03-17 15:17:53

标签: c# winforms

我正在尝试使用此代码使用一些注册表信息填充listview。

private void button1_Click(object sender, EventArgs e)
{
    ListViewItem lvItem = null;
    RegistryKey uninstallKey = Registry.LocalMachine.OpenSubKey(UninstallPath);
    if (uninstallKey != null)
        foreach (var subKey in uninstallKey.GetSubKeyNames())
        {
            using (RegistryKey key = uninstallKey.OpenSubKey(subKey))
            {
                if (key != null)
                {
                    lvItem =
                        new ListViewItem(key.GetValue("DisplayName").ToString());
                    lvItem.SubItems.Add(key.GetValue("Publisher").ToString());
                }
            }
            listView1.Items.Add(lvItem);
        }
    }
}

调试应用程序时一切正常。在断点到达此处之前没有任何空值

lvItem = new ListViewItem(key.GetValue("DisplayName").ToString());
lvItem.SubItems.Add(key.GetValue("Publisher").ToString());

应用程序崩溃并给我空指针异常。我知道这是一个愚蠢的问题,但我真的不明白它怎么可能是空的。

1 个答案:

答案 0 :(得分:2)

请勿使用key.GetValue("Publisher").ToString(),而是使用(string)key.GetValue("Publisher")。这是因为GetValue可以返回null,如果你在null上尝试.ToString(),你将得到该异常。