【发布时间】:2012-02-03 16:47:28
【问题描述】:
我的程序有一个按钮,点击它会打开一个 openfiledialog 来选择图片:
private string ChoosePicture()
{
fDialog.Title = "Select Picture";
fDialog.Filter = "Image Files (*.bmp, *.gif, *.jpg)|*.bmp; *.gif*;*.jpg";
fDialog.InitialDirectory = "C:";
fDialog.ShowDialog();
fDialog.AddExtension = true;
fDialog.CheckFileExists = true;
fDialog.CheckPathExists = true;
//returns a string for the directory
return fDialog.FileName.ToString();
}
检查对话框结果框也没有解决我的问题:
fDialog.AddExtension = true;
fDialog.CheckFileExists = true;
fDialog.CheckPathExists = true;
DialogResult res = fDialog.ShowDialog();
if (res == DialogResult.OK)
{
//returns a string for the directory
return fDialog.FileName.ToString();
}
return null;
如果我确实选择了一张图片并完成了文件选择,那么代码就可以工作。但是,如果我在两者之间的任何时候取消该过程,我会得到“路径不是合法形式”的异常。我不确定我想哪个部分可以用try-catch 解决这个问题,但是我不确定哪个部分导致了这个问题?如果我在对ChoosePicture() 方法的调用周围加上try catch,我至少可以阻止它使程序崩溃,但是在fdialogbox 中没有选择图片时仍然会抛出异常。
【问题讨论】:
-
将 Dialogresult 的代码包装在 If else 语句周围
-
发生这种情况是因为您忽略了 ShowDialog() 的返回值。也可能是不好的缩进。
-
在实际显示对话框之前添加对话框约束。之后一切都完成了,这个检查根本不重要
-
除非你是在设计器中设置,否则这个设置在第一次使用时其实对控件没有影响。
-
听起来您需要在进一步处理之前检查从 ChoosePicture() 方法返回的值。如果该方法返回一个空字符串或 null,则不要继续进行。显示调用 ChoosePicture() 方法的代码
标签: c# image exception file-io openfiledialog