0

ボタンクリックイベントにテストループを入れたいです。このボタンをクリックすると、テキスト ファイルの内容が読み取られますが、テキスト ファイルでない場合は、「ファイルを読み取ることができません」というエラー メッセージがポップアップ表示されるようにしたい... これが私のコードです

private void button3_Click(object sender, EventArgs e)
{
    StreamReader sr = new StreamReader(textBox1.Text);
    richTextBox1.Text = sr.ReadToEnd();
    sr.Close();
}

どうすればそれについて行くことができますか?

4

2 に答える 2

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");
}
于 2012-04-21T15:44:04.653 に答える
1

最良のコードではありませんが、機能するはずです。理想的には、ロジックを2つのメソッドに分割します。ファイルが存在し、テキストファイル(ブール値を返す)であるかどうかをチェックする関数と、チェック関数が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;
    }
于 2012-04-21T15:47:49.467 に答える