簡體   English   中英

如何使用openfiledialog在C#中以文本形式打開任何文件?

[英]How to use openfiledialog to open any file as text in C#?

我正在C#中編寫一個使用openfiledialog的winforms程序。 我希望它能夠將用戶選擇的文件作為文本打開,而不管文件類型如何。

我這樣嘗試過:

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
    textBox1.Text = Process.Start("notepad.exe", openFileDialog1.ToString()).ToString();
}

但是,這沒有用,我不確定我是否走在正確的軌道上。

您應該使用以下代碼:
首先添加以下名稱空間:

    using System.IO;

然后將此代碼添加到您的函數中:

    OpenFileDialog openFileDialog = new OpenFileDialog();
    openFileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
    if (openFileDialog.ShowDialog()== DialogResult.OK)
    {
            textBox1.Text = File.ReadAllText(openFileDialog.FileName);
    }

要使用記事本打開文件,您需要將文件名作為Start方法的第二個參數傳遞。 例如:

using (var ofd = new OpenFileDialog())
{
    if(ofd.ShowDialog()== DialogResult.OK)
    {
        System.Diagnostics.Process.Start("notepad.exe", ofd.FileName);
    }
}

同樣,如果由於某種原因知道並非所有文件內容都是文本,那么您將自己閱讀文件內容:

using (var ofd = new OpenFileDialog())
{
    if(ofd.ShowDialog()== DialogResult.OK)
    {
        var txt = System.IO.File.ReadAllText(ofd.FileName);
    }
}

您目前正在執行的操作是使用參數openFileDialog1.ToString()啟動一個Process ,在該進程上調用ToString()並將其設置為TextBox中的文本。 如果路徑有效,則結果可能類似於“ System.Diagnostics.Process”。 但是,由於您使用openFileDialog1.ToString()作為路徑,因此您的應用程序可能因未找到文件錯誤而崩潰。

要獲取OpenFileDialog的選定文件,請使用openFileDialog1.FileName (請參閱此處的文檔)

我認為您真正想做的是從文件讀取並將其內容作為文本寫到TextBox。 為此,您需要一個StreamReader ,如下所示:

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
    using(var reader = new StreamReader(openFileDialog1.FileName))
    {
        textBox1.Text = reader.ReadToEnd();
    }
}

這樣,您可以使用StreamReader打開文件,讀取其內容,然后將其分配給文本框。

之所以using語句,是因為StreamReader用完后需要將其丟棄,以便不再使用該文件並釋放所有資源。 using語句會自動為您執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM