通过他的名字在while循环中获取文件

时间:2017-03-24 21:16:43

标签: c# arrays image list uri

我有一个while循环:

int a = 0;

while (list_Level[a] < Initial_Lvl)
{
    var dOpt = new DataGridObjectOpt();
    dOpt.ImageSource = new Uri(filePaths[a], UriKind.RelativeOrAbsolute);

    a++;
}

通过这种方式,我可以从filePaths的文件夹中获取图像,但除非我更改名称,否则我无法控制它们的顺序。

我想以下一个while循环为例:(我有3个图像名为&#34; apple.jpg&#34;,&#34; orange.jpg&#34;,&#34; banana.jpg&# 34)

int a = 0;
string[] name = ['apple','orange','banana']
while (a < 2)
{
    var dOpt = new DataGridObjectOpt();
    dOpt.ImageSource = new Uri(string.Format("{0}.jpg", name[a]); UriKind.RelativeOrAbsolute);

    a++;
}

但我仍然希望它像以前一样在文件路径中搜索这些图像。

谢谢。

1 个答案:

答案 0 :(得分:0)

您必须使用以双引号定义的字符串初始化字符串数组,并且需要用大括号替换这些方括号:

string[] name = {"apple", "orange", "banana"};

您还需要使用逗号替换ImageSource作业中的分号:

dOpt.ImageSource = new Uri(string.Format("{0}.jpg", name[a]), UriKind.RelativeOrAbsolute);

最后,您在DataGridObjectOpt语句中声明了while个对象,因此它们只有在您进入循环时才存在,这意味着您的代码并不是真的在做任何东西。

当我们无法说出你真正想要做什么时,它几乎不可能给你一个答案。你对这些dOpt对象的计划是什么?

这是我对你的解决方案的最佳猜测。它会根据您定义的UrifilePath列表创建name个对象列表。然后,您可以稍后使用它来分配DataGridObjectOpt对象ImageSource属性:

var imageSourceUris = new List<Uri>();

for (int i = 0; i < Initial_Lvl; i++)
{
    imageSourceUris.Add(new Uri(filePaths[i], UriKind.RelativeOrAbsolute));
}

string[] names = {"apple", "orange", "banana"};

foreach (var name in names)
{
    imageSourceUris.Add(new Uri($"{name}.jpg", UriKind.RelativeOrAbsolute));
}

// Now you have a list of Uris that you can assign to
// different DataGridObjectOpt object ListSource properties
// This example just creates a bunch of them and assigns the property

var dataGridOptions = new List<DataGridObjectOpt>();

foreach (var imageSourceUri in imageSourceUris)
{
    dataGridOptions.Add(new DataGridObjectOpt {ImageSource = imageSourceUri});
}