Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/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# 如何在取消OpenFileDialog时防止异常?_C#_Openfiledialog - Fatal编程技术网

C# 如何在取消OpenFileDialog时防止异常?

C# 如何在取消OpenFileDialog时防止异常?,c#,openfiledialog,C#,Openfiledialog,我点击按钮上传一张照片。当我取消照片选择时,程序抛出一个异常 这是我的密码: private void button1_Click(object sender, EventArgs e) { Image<Bgr, byte> img = new Image<Bgr, byte>(Islem.getFileName()); ımageBox1.Image = img; } class Islem { public static string get

我点击按钮上传一张照片。当我取消照片选择时,程序抛出一个异常

这是我的密码:

private void button1_Click(object sender, EventArgs e)
{
    Image<Bgr, byte> img = new Image<Bgr, byte>(Islem.getFileName());
    ımageBox1.Image = img;
}

class Islem
{
    public static string getFileName()
    {
        OpenFileDialog ofd = new OpenFileDialog();
        ofd.Filter = "Images (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|" + "All files (*.*)|*.*";
        if (ofd.ShowDialog() == DialogResult.OK)
        {
            return ofd.FileName;
        }
        return "";
    }
}

如何解决这种情况?

当用户取消对话框时,getFileName函数返回一个空字符串。因此,当您尝试从不存在的路径(即空字符串)加载图像时,会出现异常。如果您阅读异常消息,您将自己解决它

您可以这样做:

private void button1_Click(object sender, EventArgs e)
{
    string imgFilePath = Islem.getFileName();
    if (!string.IsNullOrEmpty(imgFilePath))
    {
        Image<Bgr, byte> img = new Image<Bgr, byte>(imgFilePath);
        ımageBox1.Image = img;
    }
}

错误的位置不是合适的问题描述。哪个错误的位置?如果对话框取消,您不能更正您的代码,使其不进入该对话框吗?当我取消openfiledialog时,如何防止出现异常?您的按钮单击假定您有一个有效的文件。您必须首先检查。抛出的确切异常是什么?显示堆栈跟踪。非常感谢。当我选择一个图像时,对话框窗口会出现两次。选择图像时,第一个获取图像路径,第二个加载图像。但这不是错吗?没有别的办法吗?哎呀!糟糕的是,我忘了重用imgFilePath变量。刚修好,我明白了。图像img=新图像imgfilepath;很高兴我能帮忙。请记住,下一次,请阅读异常消息,如果您仍然无法找出问题所在,请将异常包含在您的问题中,这一点非常重要。祝你好运:
if (System.IO.File.Exists(imgFilePath)) { //use it to load the image }