Как использовать openfiledialog, чтобы открыть любой файл в виде текста в C #? - PullRequest
0 голосов
/ 27 мая 2018

Я пишу программу winforms на C #, которая использует openfiledialog.Мне бы хотелось, чтобы он мог взять файл, который выбрал пользователь, и открыть его как текст, независимо от типа файла.

Я попробовал это так:

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

Однако это не сработало, и я не уверен, что я даже на правильном пути.

Ответы [ 3 ]

0 голосов
/ 27 мая 2018

В настоящий момент вы запускаете Process с аргументом openFileDialog1.ToString(), вызываете 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, читаете его содержимое и затем присваиваете его тексту.box.

Оператор using существует, потому что StreamReader необходимо утилизировать после того, как вы закончите с ним, чтобы файл больше не использовался и все ресурсы были освобождены.Оператор using делает это автоматически.

0 голосов
/ 27 мая 2018

Вы должны использовать этот код:Сначала добавьте это пространство имен:

    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);
    }
0 голосов
/ 27 мая 2018

Чтобы открыть файл с помощью блокнота, вам нужно передать имя файла как второй параметр метода 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);
    }
}
...