Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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保存图像名称#_C#_Winforms - Fatal编程技术网

C# 用C保存图像名称#

C# 用C保存图像名称#,c#,winforms,C#,Winforms,我正在尝试读取当前图像文件名或图像名称,例如0.png或1.png,但失败。我正在尝试以下和更多。在下面的代码中,images是一个已经包含 images.Add(Image.FromFile(fileinfo.FullName)); 任何建议或想法都会有帮助。是否可以将文件名存储在程序的当前位置 foreach (Control control in tableLayoutPanel1.Controls) // run loop untill every control inside tab

我正在尝试读取当前图像文件名或图像名称,例如0.png或1.png,但失败。我正在尝试以下和更多。在下面的代码中,
images
是一个已经包含

images.Add(Image.FromFile(fileinfo.FullName));
任何建议或想法都会有帮助。是否可以将文件名存储在程序的当前位置

foreach (Control control in tableLayoutPanel1.Controls) // run loop untill every control inside tablelayoutpanel1.Controls is check or read
    {
        Button btns = control as Button;   // btn sotre the current button in table.contr 
        if (btns != null)                  // check btn got a button from the panel then
        {
            int randomNumber = random.Next(images.Count);   // pic the random image from list by its index which are already in images list and also count how many are they
            //MessageBox.Show(images.Count.ToString());     // if 6 images then 6 will be the max index value for 
            btns.BackgroundImage = images[randomNumber];    // change btn image to current random image
            copyImages.Add(images[randomNumber]);           // fileName.Add(** here some query for storing current image file name required**);   
            btns.BackgroundImage = null;
            images.RemoveAt(randomNumber);  // remove the current image index from list 
            //btns.Hide();
        }
    }

fileName
是我创建的一个列表。我只想将文件名存储在其0索引上,或者可以执行类似的操作设置图像:将图像的名称存储在按钮的Tag属性中?如果是,如何操作?

将图像分配给按钮,然后将其删除:

btns.BackgroundImage = images[randomNumber]; 
...
btns.BackgroundImage = null;

那不可能是对的。

除了Steve Wellens发现的bug之外 有几种方法可以做到这一点。 最简单的是

使图像成为文件名的列表。 然后从循环中的文件调用 e、 g

如果你有一些深层次的需求,那么在使用它们之前,你需要把所有的图像都加载上去。 然后其他选项将是一个结构或一个类(文件名和图像),并有它们的列表


或者,如果文件名是唯一的,则将图像作为
字典
,其中string是文件名,并使用它的
键。计数
键。ElementAt
方法使循环工作。

因此,除了@SteveWellens发现的错误,你想在按钮上设置图像,并将文件名存储在按钮标签上吗?无论如何,我没有任何编译问题,我已经在按钮上随机设置了图像,单击时也会显示该图像。我只想知道它们的名称,以便我可以比较两个图像是否相同,例如,如果两个按钮背景相同,我有1.png和1个以上1.png图像名称是1我想做一些事情,比如显示消息框,这两个图像都是相同的,希望你明白我的意思。这不是编译问题,这是按钮背景图像是可怕的空白问题。这不是一个错误,我故意将它们作废cz我不希望它们在被单击之前被看到,我也将它们复制到不同的列表中,为什么每个人都说这是一个错误:(.谢谢你的帮助:)。我不能在这里发布我的整个项目,所以我不能解释更多我正在通过copyImages复制图像;在一个不同的列表中随机地供进一步使用我想知道我如何跟踪他们的名字假设如果将他们的名字存储在不同的数组或列表中,但一旦他们随机化,我就对他们失去了更多的跟踪。我问的真正问题是我如何获得图像的文件名,例如123.png是文件名,我如何在图像的特定部分获得它代码如果可能正如Tony Hopkinson所指出的,由你来管理这些名字…如果你真的需要的话。哦,是的,谢谢,我可以自己给它们取个名字:)非常感谢:)这不是一个bug,我故意将它们作废cz,我不想让它们在被点击之前被看到,我还将它们复制到另一个列表中,为什么每个人都说这是一个错误:(.谢谢你的帮助:).你在分配和取消分配时把我们弄糊涂了。我们还会怎么想?很多代码理解都是意图,设置背景图像暗示了拥有背景图像的意图…基于后来的评论。您只需要将图像作为字符串列表,然后分配给按钮的tag属性,然后使用该属性在click事件处理程序中加载图像。工作完成:)我希望我能和你分享我的项目。你可以把我的gmail发送给我,它显示在我的个人资料上,我会把项目发送给你。
btns.Tag = images[randomnumber];
btns.BackgroundImage = ImageFromFile(images[randomNumber]);