我想在按钮点击事件上放置一个测试循环。当我单击此按钮时,它会读取文本文件的内容,但我希望它弹出显示“无法读取文件”的错误消息,如果它不是文本文件.... 这是我的代码
private void button3_Click(object sender, EventArgs e)
{
StreamReader sr = new StreamReader(textBox1.Text);
richTextBox1.Text = sr.ReadToEnd();
sr.Close();
}
我该怎么办呢?
答案 0 :(得分:2)
一些if语句和名称空间System.IO
将会这样做
string filename = textBox1.Text;
if (Path.GetExtension(filename).ToLower()) == ".txt") {
if (File.Exists(filename)) {
// Process the file here
} else {
MessageBox.Show("The file does not exist");
}
} else {
MessageBox.Show("Not a text file");
}
答案 1 :(得分:1)
不是最好的代码,但应该有效。理想情况下,您将逻辑分为两个方法,一个检查文件存在的函数,一个文本文件(返回一个bool),另一个读取内容,如果检查函数返回true并用文本框填充内容。
编辑:这样更好:
private void button3_Click(object sender, EventArgs e)
{
string filePath = textBox1.Text;
bool FileValid = ValidateFile(filePath);
if (!IsFileValid)
{
MessageBox.Show(string.Format("File {0} does not exist or is not a text file", filePath));
}
else
{
textbox2.Text = GetFileContents(filePath);
}
}
private bool IsFileValid(string filePath)
{
bool IsValid = true;
if (!File.Exists(filePath))
{
IsValid = false;
}
else if (Path.GetExtension(filePath).ToLower() != ".txt")
{
IsValid = false;
}
return IsValid;
}
private string GetFileContents(string filePath)
{
string fileContent = string.Empty;
using (StreamReader reader = new StreamReader(filePath))
{
fileContent = reader.ReadToEnd();
}
return fileContent;
}