【发布时间】:2013-05-11 15:17:02
【问题描述】:
我知道这是一个可笑的问题,但是上帝,我最后一天都在用它来敲我的头,但它根本行不通!该死的老师甚至没有提到将任何数据导入DataGridView!
我有一个 C# Windows 窗体作业:我必须从 .txt(用户)文件中读取数据并将其粘贴到 C# Microsoft Visual Studio 2012 中的 DataGridView 表中。 users.txt 文件类似于带有 TAB 分隔符的文件:
-------------------------------------------------
ID Name Surname Telephone VIP Age Balance
-------------------------------------------------
0001 John Killer 1-500-300 0 13 2272
0002 Name Surname 1-500-200 0 27 225
0003 Martin King 1-500-400 1 41 1070
忽略标签名称(ID、姓名、姓氏...),我写它们只是为了清楚起见,真正的文件中只有原始用户数据。
现在,我之前创建了一个类Users,它有这些字段:
- 身份证
- 姓名
- 姓氏
- 电话
- 贵宾
- 购买的物品
- 价格
然后创建一个 DataGridView (usersDataGridView) 并从其中导入类 Users 的字段。
好的,从算法上讲,这有点容易,不是吗?
我的想法是:使用StreamReader 读取文件内容,将每一行保存为一个字符串,然后使用\t 作为分隔符将字符串拆分为多个部分String.Split。
但是,一旦我将这些行分开......好吧,我基本上不知道如何将它们导入 DataGridView(我“知道”它应该是 DataSource 但是...... Visual Studio 2012 的 UI对我来说似乎太“复杂”了,无法让我弄清楚如何将字符串或任何该死的数据类型作为数据源)。
我可怜的尝试导致了以下结果:
尝试 1:
public void Test_1()
{
string filePath = string.Format("{0}/databases/{1}", AppDomain.CurrentDomain.BaseDirectory, "user_db.txt");
string[] textData = System.IO.File.ReadAllLines(filePath);
string[] headers = textData[0].Split('\t');
DataTable dataTable1 = new DataTable();
foreach (string header in headers)
dataTable1.Columns.Add(header, typeof(string), null);
for (int i = 1; i < textData.Length; i++)
dataTable1.Rows.Add(textData[i].Split('\t'));
//Set the DataSource of DataGridView to the DataTable
promotionsDataGridView.DataSource = dataTable1;
}
尝试 2:
public void ReadFromFile()
{
string delimeter = "\t";
string tableName = "BooksTable";
string fileName = string.Format("{0}/databases/{1}", AppDomain.CurrentDomain.BaseDirectory, "bigtest.sql");
DataSet dataset = new DataSet();
StreamReader sr = new StreamReader(fileName);
dataset.Tables.Add(tableName);
dataset.Tables[tableName].Columns.Add("InventoryID");
dataset.Tables[tableName].Columns.Add("Brand");
dataset.Tables[tableName].Columns.Add("Category");
dataset.Tables[tableName].Columns.Add("Description");
dataset.Tables[tableName].Columns.Add("Promotions");
dataset.Tables[tableName].Columns.Add("Quantity");
dataset.Tables[tableName].Columns.Add("Price");
string allData = sr.ReadToEnd();
string[] rows = allData.Split("\r".ToCharArray());
foreach (string r in rows)
{
string[] items = r.Split(delimeter.ToCharArray());
dataset.Tables[tableName].Rows.Add(items);
}
this.productsDataGridView.DataSource = dataset.Tables[0].DefaultView;
}
但是我不断收到一些诸如
之类的废话错误输入数组大小大于任何值
由于我几乎没有使用DataGridView 的经验,我想我在算法层面有一些可怕的错误,对吧?!
请任何人帮助我!我已经阅读、复制、粘贴、编译和调试了 20 个类似主题的不同问题,但我仍然一无所获!
从.txt 文件中读取数据,然后将其粘贴到 DataGridView 的正确方法是什么?
非常感谢任何帮助或答案!
【问题讨论】:
标签: c# file datagridview tabs