Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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# 如果文件大小为0kb,则它不会显示在gridview上,文件将被删除_C#_Image_Gridview_Uwp - Fatal编程技术网

C# 如果文件大小为0kb,则它不会显示在gridview上,文件将被删除

C# 如果文件大小为0kb,则它不会显示在gridview上,文件将被删除,c#,image,gridview,uwp,C#,Image,Gridview,Uwp,我有一个显示一些文件的gridview。如果文件大小为0 kb,则不显示和删除该文件,而仍显示其他文件 代码: 如果我使用上面的代码,那么如果存在大小为0 kb的文件,则不会显示所有文件。如何仅获取未显示和删除的0 kb文件,而其他文件仍在显示?您的代码在循环中重复设置项资源,这效率较低,但不应影响结果-即使存在一些大小为0的文件,也应跳过它们并设置“实际”值文件应导致数据源更新 我关注的是: thumbFile = await cover.GetFileAsync(file.DisplayNa

我有一个显示一些文件的gridview。如果文件大小为0 kb,则不显示和删除该文件,而仍显示其他文件 代码:


如果我使用上面的代码,那么如果存在大小为0 kb的文件,则不会显示所有文件。如何仅获取未显示和删除的0 kb文件,而其他文件仍在显示?

您的代码在循环中重复设置
项资源,这效率较低,但不应影响结果-即使存在一些大小为0的文件,也应跳过它们并设置“实际”值文件应导致
数据源
更新

我关注的是:

thumbFile = await cover.GetFileAsync(file.DisplayName.ToString() + ".jpg");
thumbFile = await cover.GetFileAsync( Path.GetFileNameWithoutExtension( file.Name ) + ".jpg" );
已知,
DisplayName
属性有时会返回文件名,包括 分机。我建议使用以下方法:

thumbFile = await cover.GetFileAsync(file.DisplayName.ToString() + ".jpg");
thumbFile = await cover.GetFileAsync( Path.GetFileNameWithoutExtension( file.Name ) + ".jpg" );
Name
属性返回文件的全名,因此如果应用
Path.GetFileNameWithoutExtension
,扩展名肯定会被删除,因此结果将是您想要的


如果这没有帮助,请将
catch
表达式更改为
catch(Exception ex)
,然后在
catch
块内放置一个断点,因为如果
datasource
变量没有填写数据,必须事先发生异常。

因为您已经设置了
this.itemGridView.ItemsSource=datasource
pro.Size!=0

尝试使用此代码

StorageFolder cover = await komik.GetFolderAsync("cover");
List<StorageFile> deletedFileList = new List<StorageFile>();
foreach (StorageFile file in sortedfiles)
{
    bool bukuada = true;
    Buku buku = new Buku();
    buku.Judul = file.DisplayName.ToString();
    BasicProperties pro = await file.GetBasicPropertiesAsync();
    if (pro.Size != 0)
    {
        StorageFile thumbFile = file;
        try
        {
            thumbFile = await cover.GetFileAsync(file.DisplayName.ToString() + ".jpg");
            BitmapImage bi = new BitmapImage();
            bi.SetSource(await thumbFile.OpenAsync(FileAccessMode.Read));
            buku.Cover = bi;

            datasource.Add(buku);
            loading.IsActive = false;           
        }
        catch
        {

        }
    }
    else
    {
        deletedFileList.Add(file);
    }
}

// display the data source.
 this.itemGridView.ItemsSource = datasource;

 // delete the file
    foreach(var temp in deletedFileList)
    {
        try
        {
            await temp.DeleteAsync();
        }
        catch(IOException)
        {

        }
    }
storagefoldercover=wait komik.GetFolderAsync(“cover”);
List deletedFileList=新列表();
foreach(sortedfiles中的存储文件)
{
bool bukuada=真;
Buku Buku=新的Buku();
buku.Judul=file.DisplayName.ToString();
BasicProperties pro=await file.getBasicProperties异步();
如果(专业尺寸!=0)
{
StorageFile thumbFile=文件;
尝试
{
thumbFile=await cover.GetFileAsync(file.DisplayName.ToString()+“.jpg”);
BitmapImage bi=新的BitmapImage();
SetSource(wait thumbFile.OpenAsync(FileAccessMode.Read));
buku.Cover=bi;
datasource.Add(buku);
loading.IsActive=false;
}
抓住
{
}
}
其他的
{
deletedFileList.Add(文件);
}
}
//显示数据源。
this.itemGridView.ItemsSource=数据源;
//删除该文件
foreach(deletedFileList中的var temp)
{
尝试
{
等待temp.DeleteAsync();
}
捕获(IOException)
{
}
}

您目前的代码有什么问题?难道你不需要添加一个
else
,然后在其中删除文件吗?问题是如果有1个或一些0 kb的文件,那么所有文件都无法显示。我只希望0 kb的文件不显示,并且该文件已被删除在foreach循环之后。将
datasource
定义为ObservableCollection:
ObservableCollection datasource=new ObservableCollection()
并移动行
this.itemGridView.ItemsSource=datasource出foreach循环(例如,就在它之前)。然后,您的GridView应该会自动更新,而无需重置ItemsSource。我收到一条错误消息:“List”不包含“DeleteAsync”的定义,并且找不到接受“List”类型的第一个参数的扩展方法“DeleteAsync”(是否缺少using指令或程序集引用?)@Rose@Rose我修好了。