【问题标题】:Image.FromFile will open a path, but not a string containing same path?Image.FromFile 将打开一个路径,但不是包含相同路径的字符串?
【发布时间】:2025-09-23 21:30:03
【问题描述】:
// The following line works.
imagebox.Image = Image.FromFile("C:/Users/Admin/Desktop/apps/pic1.png");

// The following line does not work.
imagebox.Image = Image.FromFile(imgPath);

// the test Text Box displays "C:/Users/Admin/Desktop/apps/pic1.png", exactly like in the first line
test.Text = imgPath;

当我单击应该更改图片框图像的按钮时,我收到一个错误,基本上是说路径中的非法字符,并且 ArgumentException 未处理

很抱歉没有第一次这样做。

k 所以实际的文件名被输入到一个文本框中。然后我将该文本转换为字符串,并将其添加到 begging 和 end 以创建完整的文件路径。

string path = "\"C:/Users/Admin/Desktop/apps/";
string ext1 = ".png\"";


ID = idBox.Text;
imgPath = path + ID + ext1;
try
{
    imagebox.Image = Image.FromFile(imgPath);
}
catch (System.IO.FileNotFoundException)
{
    MessageBox.Show("Invalid Student or Faculty ID.");
}

【问题讨论】:

  • 你得到什么错误信息?
  • 请不要在标题前加上“C#”。这就是我们在 SO 上使用标签的目的。
  • 错误信息?例外?无声的失败?

标签: c# string image picturebox fromfile


【解决方案1】:

只是猜测,但如果文本框字面显示:

“C:/Users/Admin/Desktop/apps/pic1.png”

然后你的路径中有引号,这很糟糕。在您的代码中,您使用引号来定义字符串,如果您从用户那里获取输入,则不需要引号。

【讨论】:

    【解决方案2】:

    这两行应该都可以正常工作,所以很明显,您的代码所做的并不是您认为正在做的。

    我看到您使用文本框来检查变量的值?帮自己一个忙,学习一下:

    1. Diagnostics.Trace.WriteLine()

    2. 如何使用调试器。

    (最重要的是调试器。)然后您将能够找出您的代码出了什么问题。因为从你给我们看的东西,是不可能发现有什么问题的。

    --哦,是的,请下次您在这里发布一些内容告诉我们“它不起作用”时,请告诉我们究竟是什么原因不起作用。它会默默地什么都不做吗?它会抛出异常吗?它是否加载了您期望的图像以外的图像?它会崩溃和燃烧吗?这有点必要。

    【讨论】:

    • 当我单击应该更改图片框图像的按钮时,我收到一个错误,基本上说路径中存在非法字符,并且 ArgumentException 未处理..
    • @user1144513:你是如何设置 imgpath 变量的?您确定它没有使用反斜杠而不是正斜杠(并且它们没有像这样 \\ 被转义)?
    • 谢谢。请把它放在你的问题中,以便其他人也能看到。
    • 尝试使用@"C:\Users\Admin\Desktop\apps\pic1.png"
    • Mike W, imagebox.Image = Image.FromFile("C:/Users/Admin/Desktop/apps/pic1.png");工作正常,只有当我在字符串中有“C:/Users/Admin/Desktop/apps/pic1.png”时它才会崩溃并报告错误。如果有办法在字符串中添加@逐字文字,请解释​​
    【解决方案3】:

    你的斜线是错误的。尝试将其设为 Verbatim 字符串,即:

    @"C:\Users\Admin\Desktop\apps\pic1.png"

    【讨论】:

      【解决方案4】:

      改变路径,

      string imgPath=@"c:\Users\Admin\Desktop\apps\pic1.png";
      

      编辑:路径包含无效字符。

      string path = @"C:\Users\Admin\Desktop\apps\";
      string ext1 = ".png";
      ID = idBox.Text;
      imgPath = path + ID + ext1;
      if(System.IO.File.Exists(imgPath))
         imagebox.Image = Image.FromFile(imgPath);
      

      【讨论】:

      • 是的,但我们仍然不知道他为什么会收到这个错误。
      • @user1144513 - 请告诉我们imgPath var 是如何分配的
      • 好吧,这需要更多的解释。我会把它放在原来的问题中
      • 非常感谢,但 Eric Rahm 通过简单地取出路径开头和结尾处的 \" 来修复它。引号导致它失败。我没有意识到它们是只是定义一个字符串。你能解释一下为什么 if 语句而不是 try-catch 语句更好吗?
      最近更新 更多