C# OpenFileDialog - 没有选择文件时的异常
C# OpenFileDialog - exception when no files are chosen
我正在尝试解决这个错误,当没有选择文件时,程序显然会进行下一步,尽管它不应该这样做。我试过:
if (fileToCheck != null)
但是没用。还有其他建议吗?
private void Mail(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*";
if (openFileDialog.ShowDialog() == true)
{
spamText.Text = File.ReadAllText(openFileDialog.FileName);
}
string[] fileToCheck = { openFileDialog.FileName };
Splitter(fileToCheck);
mail = tempDict;
}
调用Splitter
前需要检查FileName
是否为空。您可以使用 String.IsNullOrWhiteSpace 在拆分器中,您可以使用 File.Exists 来查明文件是否存在。
if(!String.IsNullOrWhiteSpace(fileToCheck))
{
string[] fileToCheck = { openFileDialog.FileName };
Splitter(fileToCheck);
mail = tempDict;
}
else
{
//Do something
}
你走在正确的轨道上。
但是检查 if (fileToCheck != null)
是不够的,因为当没有选择文件时,openFileDialog.FileName
包含空字符串,而不是 null。
所以你可以使用if (!String.IsNullOrEmpty(fileToCheck))
检查。
另一种方法 - 只需将代码放在 fileToCheck
周围,它目前在 openFileDialog.ShowDialog() == true
条件之外。它看起来更合乎逻辑,因为如果未选择文件,则不会满足此条件,您无需继续进行额外检查。
所以你的代码看起来像
if (openFileDialog.ShowDialog() == true)
{
string fileName = openFileDialog.FileName;
if (!string.IsNullOrEmpty(fileName) && File.Exists(fileName))
{
spamText.Text = File.ReadAllText(fileName);
Splitter(new [] {fileName});
}
}
我正在尝试解决这个错误,当没有选择文件时,程序显然会进行下一步,尽管它不应该这样做。我试过:
if (fileToCheck != null)
但是没用。还有其他建议吗?
private void Mail(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*";
if (openFileDialog.ShowDialog() == true)
{
spamText.Text = File.ReadAllText(openFileDialog.FileName);
}
string[] fileToCheck = { openFileDialog.FileName };
Splitter(fileToCheck);
mail = tempDict;
}
调用Splitter
前需要检查FileName
是否为空。您可以使用 String.IsNullOrWhiteSpace 在拆分器中,您可以使用 File.Exists 来查明文件是否存在。
if(!String.IsNullOrWhiteSpace(fileToCheck))
{
string[] fileToCheck = { openFileDialog.FileName };
Splitter(fileToCheck);
mail = tempDict;
}
else
{
//Do something
}
你走在正确的轨道上。
但是检查 if (fileToCheck != null)
是不够的,因为当没有选择文件时,openFileDialog.FileName
包含空字符串,而不是 null。
所以你可以使用if (!String.IsNullOrEmpty(fileToCheck))
检查。
另一种方法 - 只需将代码放在 fileToCheck
周围,它目前在 openFileDialog.ShowDialog() == true
条件之外。它看起来更合乎逻辑,因为如果未选择文件,则不会满足此条件,您无需继续进行额外检查。
所以你的代码看起来像
if (openFileDialog.ShowDialog() == true)
{
string fileName = openFileDialog.FileName;
if (!string.IsNullOrEmpty(fileName) && File.Exists(fileName))
{
spamText.Text = File.ReadAllText(fileName);
Splitter(new [] {fileName});
}
}