Процесс запускается из двух строк - PullRequest
1 голос
/ 20 февраля 2012

Я пытаюсь открыть файл, который может установить пользователь.Другими словами, это никогда не будет заданным путем или файлом.поэтому, когда пользователь выбрал файл, который он хочет открыть, эта кнопка ниже откроет его.Я объявил l1 и p1 как открытые строки.

    public void button4_Click(object sender, EventArgs e)
    {

         DialogResult result = openFileDialog1.ShowDialog();
         if (result == DialogResult.OK)
         {

             l1 = Path.GetFileName(openFileDialog1.FileName);
             p1 = System.IO.Path.GetDirectoryName(openFileDialog1.FileName);

         }


    public void button2_Click(object sender, EventArgs e)
    {
    //p1 = directory path for example "C:\\documents and settings\documents"
    //l1 = filename

        Process.Start(p1+l1);
    }

Так что просто для обзора я хочу открыть файл, просто используя путь к каталогу и имя файла.Это возможно?Я могу просто иметь p1 там, и он откроет проводник, показывающий мне этот каталог.Спасибо за поиск.

Ответы [ 3 ]

3 голосов
/ 20 февраля 2012

Да, это будет работать, но я бы порекомендовал вам обновить код:

var path = Path.Combine(p1, l1);
Process.Start(path);
2 голосов
/ 20 февраля 2012

Вы не должны использовать конкатенацию строк для объединения каталога и имени файла. В вашем случае результирующая строка будет выглядеть так:

C:\documents and settings\documentsfilename
                                  ^^
                             this is wrong

Вместо этого используйте Path.Combine.

string path = Path.Combine(p1, l1);
Process.Start(path);
1 голос
/ 20 февраля 2012

Почему бы вам просто не сделать это: -

public void button4_Click(object sender, EventArgs e)
{
    string fileNameWithPath;
    DialogResult result = openFileDialog1.ShowDialog();
    if (result == DialogResult.OK)
    {
        fileNameWithPath = openFileDialog1.FileName;
    }
}

public void button2_Click(object sender, EventArgs e)
{
    Process.Start(fileNameWithPath);
}
...