2010-02-22 1 views
0

Итак, я только начал учиться C# сегодня, и я, наконец, полностью застрял. Я пытаюсь использовать опцию просмотра, чтобы выбрать файл. Затем путь к файлу будет отображаться в текстовом поле. Затем мне нужно то, что нужно загрузить textBox1, нажав кнопку запуска.Формат данного пути не поддерживается. Просто начал использовать C#

В настоящее время у меня есть textBox1.Text, заданный как местоположение файла. Когда я ввожу \ TestList.xml в текстовое поле, он проходит через штраф и делает то, что он должен. Однако в любое другое время, например, если я набрал c: \ TestList.xml или c: \ TestList.xml, он просто говорит, что он не может использовать формат textBox1.Text в качестве местоположения файла. Любая идея, как это исправить? вот код. Я добавил кучу тире рядом с линией, которая вызывает проблему. Большое вам спасибо за любую помощь в этом.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Xml; 

namespace Combined 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      OpenFileDialog fdlg = new OpenFileDialog(); 
      fdlg.Title = "C# Corner Open File Dialog"; 
      fdlg.InitialDirectory = @"c:\"; 
      fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*"; 
      fdlg.FilterIndex = 2; 
      fdlg.RestoreDirectory = true; 
      if (fdlg.ShowDialog() == DialogResult.OK) 
      { 
       textBox1.Text = fdlg.FileName; 
      } 
     } 

     private void button2_Click(object sender, EventArgs e) 
     {       
       XmlDataDocument xmldata = new XmlDataDocument(); 

      // causing problem 
       xmldata.DataSet.ReadXml(Application.StartupPath + textBox1.Text); 

       dataGridView1.DataSource = xmldata.DataSet; 
       dataGridView1.DataMember = "Unit"; 
     } 
    } 
} 
+0

@asad: ваше редактирование ниндзя сделает это для людей трудно понять, что ОП сделал не так. – Dave

+0

надеюсь, что лучше сейчас –

+0

Хорошая стратегия отладки в подобных ситуациях заключается в том, чтобы проверить, что на самом деле передается методу, который дает вам проблему. В вашем случае установите точку останова в строке readXml() и проверьте значение Application.StartupPath + textBox1.Text . Измените свой код на: string whatIsWrong = Application.StartupPath + textBox1.Text; MessageBox.Show (whatIsWrong); xmldata.DataSet.ReadXml (whatIsWrong); Вы увидите неверный путь, как показано на рисунке @Ramesh. – JeffH

ответ

1

Ваша ошибка в том, что вы набрали абсолютный путь, но затем добавили к другому абсолютному пути.

+0

Теперь никто не видит ваш проблемный код, но если вы установите строковую переменную на то, что вы хотите открыть (путь к запуску + имя файла), вы поймете свою ошибку, если вы напечатаете ее на консоль. Вы получили бы имя файла c: \ program filesc: \ test.xml, которое, конечно, недействительно. – Dave

1

Application.StartupPath возвращает путь к исполняемому exe (получает путь к исполняемому файлу, который запустил приложение, не включая исполняемое имя, from MSDN), поэтому, если вы даете /TestList.xml, он загружает файл из Bin

Если вы даете C: \ TestList.xml, то он добавляет путь что-то вроде этого

"D: \ urapppath \ Bin \ C: \ TestList.xml", его недопустимое правый ...

Смежные вопросы