嗨,我想使用对话框形式选择文本文件,而不必使用给定的路径。我该怎么办?

我想用opendialog替换opentext吗?我已经尝试过,但是我要使用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();
}

最佳答案

我想用opendialog替换opentext吗?我已经尝试过但是我得到了
  我想使用streamreader的流错误。


解决方案1:您可以将Stream返回的openFileDialog.OpenFile()分配给StreamReader

尝试这个:

     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:如果您要将文件内容分配给多个文本框

尝试这个:

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:所有TextBoxControl都应以preText值开头。
注意2:在上述解决方案中,您可以根据需要更改startCountendCount

例如,如果要将文件contenet分配给从textBox3textBox23的20个文本框控件,则需要在上述代码中更改参数,如下所示:

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

关于c# - 将opentext更改为opendialog,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21891400/

10-11 21:09