[英]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.