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
}