嗨,我想使用对话框形式选择文本文件,而不必使用给定的路径。我该怎么办?
我想用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:在上述解决方案中,您可以根据需要更改
startCount
和endCount
。例如,如果要将文件contenet分配给从
textBox3
到textBox23
的20个文本框控件,则需要在上述代码中更改参数,如下所示:preText="textBox";
startCount = 3;
endCount = 23;
关于c# - 将opentext更改为opendialog,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21891400/