C# 使用pictureBox预览列表框中的图像

C# 使用pictureBox预览列表框中的图像,c#,winforms,casting,C#,Winforms,Casting,我正在使用Winforms创建2D地图编辑器 我希望能够使用pictureBox预览存储在listBox中的资产图像 因此,我目前的代码是 private void listBox_Assets_SelectedIndexChanged(object sender, EventArgs e) { pictureBox1.Image = Image.FromFile(((FileInfo)listBox_Assets.SelectedItem).FullName);

我正在使用Winforms创建2D地图编辑器

我希望能够使用pictureBox预览存储在listBox中的资产图像

因此,我目前的代码是

    private void listBox_Assets_SelectedIndexChanged(object sender, EventArgs e)
    {
        pictureBox1.Image = Image.FromFile(((FileInfo)listBox_Assets.SelectedItem).FullName);
    }
但是当我选择一个资产时,我会得到这个错误

无法将“System.String”类型的对象强制转换为“System.IO.FileInfo”类型


我到处寻找解决方案,但找不到此错误的答案,非常感谢您的帮助。

您可以像这样使用列表框中的文件名,并通过检查文件来保护代码

private void listBox_Assets_SelectedIndexChanged(object sender, EventArgs e)
{
    string file = IO.Path.Combine("the directory", listBox_Assets.SelectedItem);
    if (IO.File.Exists(file)) 
      pictureBox1.Image = Image.FromFile(file);
}

无需调用
ToString
though如何在不调用ToString的情况下执行此操作?或者我需要在括号之间添加一些东西吗?DonA,这消除了我的施法错误,但现在它说找不到文件,我如何将其定向到正确的位置?我看不到您存储在列表框中的文件名。使用目录并将文件名添加到其中。显示您的代码将项目添加到
列表框
。填充列表框的代码出现错误。您通过传递字符串而不是FileInfo对象来调用它的Items.Add()。这是okayish,只需转换为字符串而不是FileInfo。