窗体上有一个按钮,它应该使用 OpenFileDialog 打开文本文件(也就是说,文本文件散落在计算机周围,或者你需要打开的不是一个特定的,而是每次都不同,但没关系)
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog opnfldlg = new OpenFileDialog();
opnfldlg.InitialDirectory = "c:\\";
opnfldlg.Filter = "txt files(*.txt)|*.txt|All Files(*.*)|*.*";
opnfldlg.FilterIndex = 2;
opnfldlg.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
DataSet ds = new DataSet();
ds.Tables.Add("Temp");
StreamReader stred = new
StreamReader(opnfldlg.FileName);//Исключение!
string firstLine = stred.ReadLine();
//массив имен колонок из файла
string[] arraNameColumn =
System.Text.RegularExpressions.Regex.Split(firstLine, ";");
for (int i = 0; i < arraNameColumn.Length; i++)
{
ds.Tables[0].Columns.Add(arraNameColumn[i]);
}
string Line = stred.ReadLine();
while (Line != null)
{
string[] arraCell = System.Text.RegularExpressions.Regex.Split(Line, ";");
ds.Tables[0].Rows.Add(arraCell);
Line = stred.ReadLine();
}
dataGridView1.DataSource = ds.Tables[0];
stred.Close();
dataGridView1.AllowUserToAddRows = false;
}
}
但是这一行抛出异常
StreamReader stred = new StreamReader(opnfldlg.FileName)
Необработанное исключение типа "System.ArgumentException" в mscorlib.dll
Дополнительные сведения: Пустое имя пути не допускается.
在 OpenFileDialog 声明之后添加了以下内容:
FileIOPermission fioper = new FileIOPermission(PermissionState.Unrestricted);
fioper.AllLocalFiles = FileIOPermissionAccess.Read;
但无济于事。
逐步调试显示以下内容,即未在任何地方指示正在打开的文件的名称。应该不是这样吧。
那么问题呢?如果他自己都不能确定文件打开的路径,那这个问题怎么解决呢?
Eee...您向用户显示变量中包含的对话框
openFileDialog1
,并从中读取值opnfldlg
。修理它。