Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回空引用值的字符串_C#_String_Winforms - Fatal编程技术网

C# 返回空引用值的字符串

C# 返回空引用值的字符串,c#,string,winforms,C#,String,Winforms,我犯了一个愚蠢的错误,我不知道该怎么办 我正在使用字符串检查文件夹的名称及其扩展类型。我这样做是为了在文件夹之间导航。这对我的第一个文件夹选择很好,但是,当我尝试并单击第二个文件夹时,我会得到空引用异常 这就是我现在拥有的 string clickObject = listBox1.SelectedItem.ToString(); int index = clickObject .LastIndexOf('.'); string extension = clickObject .Subst

我犯了一个愚蠢的错误,我不知道该怎么办

我正在使用字符串检查文件夹的名称及其扩展类型。我这样做是为了在文件夹之间导航。这对我的第一个文件夹选择很好,但是,当我尝试并单击第二个文件夹时,我会得到空引用异常

这就是我现在拥有的

 string clickObject = listBox1.SelectedItem.ToString();
 int index = clickObject .LastIndexOf('.');
 string extension = clickObject .Substring(index + 1, clickObject .Length - index - 1);
  if (extension == "folder")
  {
      // do stuff
   }
在此之后,我只需检查文件夹中的文件

当我返回到我的可搜索文件夹的根目录并单击另一个目录时,也就是当我得到错误和行
string clickObject=listBox1.SelectedItem.ToString()高亮显示

在我设置这个的方法的末尾,我尝试设置
clickedObject=null我试图删除包含在
clickObject中的字符串。删除(0)但错误仍然存在

如何清除clickedObject中保存的信息,以便用新信息覆盖它

编辑

很抱歉,当我返回根目录时,忘记提及我有一个按钮调用此方法:

 using (var client = new WebClient())
        {
            result = client.DownloadString("http://foo.foo.com/images/getDirectoryList.php");
        }

        string[] names = result.Split('|');
        listBox1.Items.Clear();
        foreach (string name in names)
        {
            listBox1.Items.Add(name);
        }
        listBox1.Update();

        listBox1.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexChanged);

但是,当我单击列表框中的一个项目时,它是第一组使用的代码,并且是在一个单独的方法中

不确定这是否是一个bug。。但我以前也遇到过这种情况

问题是,
SelectedItem
SelectedIndexChanged
事件期间并不总是可用。。或者有时根本不是

修复方法是直接访问项目:

string clickObject = listBox1.Items[listBox1.SelectedIndex].ToString();
还有,当你在那里的时候。。您可以使用
System.IO
中的
File.GetExtension
方法来获取扩展名(而不是自己进行):


如果您正在处理
SelectedIndexChanged
事件,则需要将其设置为空,因为在某些情况下不会设置它

因此,在处理程序中,在尝试将其转换为字符串之前,必须检查
listBox1.SelectedItem
是否为空:

if (listBox1.SelectedItem != null)
{
    // Your code
}

很可能
SelectedItem
的计算结果为null,然后:
(null)。ToString()
肯定不起作用。您可以发布更多的代码吗?您不必“清除”
单击对象
。在列表中选择新项目将覆盖它。
if (listBox1.SelectedItem != null)
{
    // Your code
}