2014-02-19 2 views
2

Привет, я хотел бы выбрать текстовый файл, используя форму диалога, вместо того, чтобы использовать указанный путь. Как мне это сделать?Изменить opentext на opendialog

Я хочу заменить opentext на opendialog? Я попытался, но я получаю ошибки в потоке, я хочу использовать streamreader ....

private void button2_Click(object sender, EventArgs e) 
    { 

     using (StreamReader reader = File.OpenText("c:\\myparts.txt")) 
     { 
      label3.Text = "Ready to Insert"; 
      textBox7.Text = reader.ReadLine(); 
      textBox8.Text = reader.ReadLine(); 
      textBox9.Text = reader.ReadLine(); 
      textBox10.Text = reader.ReadLine(); 
} 
+0

OpenDialog возвращает путь к файлу выбранного, а не stream, вам нужно использовать это как параметр opentext. – BlackICE

ответ

2

Я хочу заменить OpenText с OpenDialog? Я пытался, но я получаю ошибки с потоком я хочу использовать StreamReader ....

Решение 1: Вы можете назначить Stream возвращаемый openFileDialog.OpenFile() к StreamReader

Try This:

 if (openFileDialog1.ShowDialog() == DialogResult.OK) 
     { 
      using (var reader = new StreamReader(openFileDialog1.OpenFile())) 
      { 
       label3.Text = "Ready to Insert"; 
       textBox7.Text = reader.ReadLine(); 
       textBox8.Text = reader.ReadLine(); 
       textBox9.Text = reader.ReadLine(); 
       textBox10.Text = reader.ReadLine(); 
      } 
     } 

Решение 2: Вы можете непосредственно присвоить openFileDialog().FileName свойство как Path аргументов в File.OpenText() метода, как показано ниже:

 if (openFileDialog1.ShowDialog() == DialogResult.OK) 
     { 
      using (var reader = new StreamReader(openFileDialog1.OpenText(openFileDialog1.FileName))) 
      { 
       label3.Text = "Ready to Insert"; 
       textBox7.Text = reader.ReadLine(); 
       textBox8.Text = reader.ReadLine(); 
       textBox9.Text = reader.ReadLine(); 
       textBox10.Text = reader.ReadLine(); 
      } 
     } 

Решение 3: если вы хотите назначить содержимое файла на нескольких textbox'es

Попробуйте это:

int startCount=7; 
int endCount=10; 
string preText="textBox"; 
if (openFileDialog1.ShowDialog() == DialogResult.OK) 
{ 
    String fileName=openFileDialog1.FileName; 
    foreach(var line in File.ReadLines(fileName)) 
    { 
    ((TextBox) (this.Controls.Find(preText+startCount,true)[0])).Text=line; 
    if(startCount==endCount) 
     break; 

     startCount++; 
    } 
} 

Примечание 1: Все значения TextBoxControls должны начинаться с значения preText.
Примечание 2: в вышеуказанном решении вы можете изменить startCount и endCount согласно вашему требованию.

, например, если вы хотите назначить файл contenet 20 управления TextBox, начиная с textBox3 к textBox23 вам необходимо изменить параметры в коде выше, как показано ниже:

preText="textBox"; 
startCount = 3; 
endCount = 23; 
+0

Удивительное спасибо. –

+0

@ user3324892: приветствую :) Я рад помочь вам. –

4

Хотите что-то вроде этого?

OpenFileDialog dlg = new OpenFileDialog(); 

if (dlg.ShowDialog() == DialogResult.OK) 
{ 
    using (var reader = File.OpenText(dlg.FileName)) 
    { 
     ... 
    } 
} 
2
private void button2_Click(object sender, EventArgs e) 
{ 
     string fileToOpen = ""; 

     OpenFileDialog dialog = new OpenFileDialog(); 
     dialog.Title = "Browse for file..."; 
     dialog.RestoreDirectory = true; 

     DialogResult result = dialog.ShowDialog(); 

     if (result == DialogResult.OK) 
     { 
      fileToOpen = dialog.FileName; 
     } 

     using (StreamReader reader = File.OpenText(fileToOpen)) 
     { 
      label3.Text = "Ready to Insert"; 
      textBox7.Text = reader.ReadLine(); 
      textBox8.Text = reader.ReadLine(); 
      textBox9.Text = reader.ReadLine(); 
      textBox10.Text = reader.ReadLine(); 
     } 
} 
+0

Если это решение, с которым вы столкнулись. Пожалуйста, не стесняйтесь «проверять» это как ответ. ;) Рад, что смог помочь. –

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