我正在努力解决这个错误,当没有选择文件时,程序显然会去做下一步,尽管它不应该。我试过了:
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;
}
答案 0 :(得分:2)
你走在正确的轨道上。
但是检查if (fileToCheck != null)
是不够的,因为当没有选择文件时,openFileDialog.FileName
包含空字符串,而不是空。
所以你可以使用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});
}
}
答案 1 :(得分:1)
在致电FileName
之前,您需要检查Splitter
是否为空。您可以使用String.IsNullOrWhiteSpace在Splitter中,您可以使用File.Exists查找文件是否存在。
if(!String.IsNullOrWhiteSpace(fileToCheck))
{
string[] fileToCheck = { openFileDialog.FileName };
Splitter(fileToCheck);
mail = tempDict;
}
else
{
//Do something
}