C# 列表不使用GetFiles方法

C# 列表不使用GetFiles方法,c#,wpf,list,.net,getfiles,C#,Wpf,List,.net,Getfiles,为了弄清楚为什么这样做不起作用,列表是使用combobox项(将本地HDD根地址列为项)检索照片。当选中该项时,它将转换为字符串,并应用作GetFiles方法的路径,但在运行时(string path=)行出错,我得到“对象引用未设置为对象实例”如果有人能告诉我出了什么问题,我将不胜感激 public List<Photos> LoadImages ///List Retrieves and Loads Photos { get {

为了弄清楚为什么这样做不起作用,列表是使用combobox项(将本地HDD根地址列为项)检索照片。当选中该项时,它将转换为字符串,并应用作
GetFiles
方法的路径,但在运行时(string path=)行出错,我得到“对象引用未设置为对象实例”如果有人能告诉我出了什么问题,我将不胜感激

public List<Photos> LoadImages ///List Retrieves and Loads Photos
    {

        get
        {
            List<Photos> Image = new List<Photos>();
            string path = HDDSelectionBox.SelectedItem.ToString(); //ComboBox SelectedItem Converted To String As Path
            foreach (string filename in Directory.GetFiles(path, "*jpg")) 
            {
                try
                {
                    Image.Add( //Add To List
                        new Photos(
                            new BitmapImage(
                                new Uri(filename)),
                                System.IO.Path.GetFileNameWithoutExtension(filename)));
                }
                catch { } //Skips Any Image That Isn't Image/Cant Be Loaded
            }
            return Image;
        }
    }
public List LoadImages///List检索并加载照片
{
得到
{
列表图像=新列表();
string path=HDDSelectionBox.SelectedItem.ToString();//组合框SelectedItem转换为字符串作为路径
foreach(Directory.GetFiles(路径“*jpg”)中的字符串文件名)
{
尝试
{
Image.Add(//添加到列表
新照片(
新位图图像(
新Uri(文件名)),
System.IO.Path.GetFileNameWithoutExtension(filename));
}
catch{}//跳过任何不是映像/无法加载的映像
}
返回图像;
}
}

您应该将
放在行中的文件扩展名之前:

Directory.GetFiles(path, "*.jpg")
您还需要检查
HDDSelectionBox.SelectedItem
是否不为空:

public List<Photos> LoadImages ///List Retrieves and Loads Photos
{
    get
    {
        List<Photos> images = new List<Photos>();
        if (HDDSelectionBox.SelectedItem != null)
        {
            string path = HDDSelectionBox.SelectedItem.ToString(); //ComboBox SelectedItem Converted To String As Path
            foreach (string filename in Directory.GetFiles(path, "*.jpg"))
            {
                try
                {
                    images.Add( //Add To List
                        new Photos(
                            new BitmapImage(
                                new Uri(filename)),
                                System.IO.Path.GetFileNameWithoutExtension(filename)));
                }
                catch { } //Skips Any Image That Isn't Image/Cant Be Loaded
            }
        }
        return images;
    }
}
public List LoadImages///List检索并加载照片
{
得到
{
列表图像=新列表();
如果(HDDSelectionBox.SelectedItem!=null)
{
string path=HDDSelectionBox.SelectedItem.ToString();//组合框SelectedItem转换为字符串作为路径
foreach(Directory.GetFiles(路径“*.jpg”)中的字符串文件名)
{
尝试
{
image.Add(//添加到列表
新照片(
新位图图像(
新Uri(文件名)),
System.IO.Path.GetFileNameWithoutExtension(filename));
}
catch{}//跳过任何不是映像/无法加载的映像
}
}
返回图像;
}
}

此外,这可能更适合于方法而不是属性,因为它会进行大量处理…

这很可能意味着
HDDSelectionBox
HDDSelectionBox.SelectedItem
为空。你检查过吗?嗯,我读过了,但因为我正在学习,这对我来说是新的,我的目标是如果只在组合框不为空的情况下加载图像,即仅在用户从组合框中选择了一个项目后,我感觉在程序加载时会制作一个正确的列表,然后当然会是空的,开始时很可怕,我只是想知道我的新列表行将去哪里?感谢到目前为止的帮助,我已经想了一会儿检查null,但当前它需要一个get或set访问器,并在检查fur null之前添加if语句。如果HDDSelectionBox.SelectedItem为null,它将返回一个空列表。到目前为止,ive public ListLoad Images{然后是new list();然后是if,但它在新列表行中给我加了下划线谢谢,代码运行时没有错误,但当我从组合框中选择一个项目时,列表框没有显示任何内容,它可能只是我的绑定,但我已经检查并选中了它。当您逐步查看代码时,它是否返回一个<代码>照片的列表?