2

私はこれがばかげた質問であることを知っていますが、神よ、私は最後の日をずっと頭をぶつけて過ごしましたが、うまくいきません! クソ先生は、データを DataGridView にインポートすることについては何も言及していませんでした。

C# Windows フォームの宿題があります。(users) ファイルからデータを読み取って、C# Microsoft Visual Studio 2012 のDataGridView.txtテーブルに貼り付ける必要があります。ファイル内のデータは、タブ区切り記号を使用したようなものです。users.txt

-------------------------------------------------
    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さて、私は以前にこれらのフィールドを持つclass を作成しました:

  • ID
  • 名前
  • 電話
  • VIP
  • 購入したアイテム
  • 価格

次に、DataGridView(usersDataGridView)を作成し、クラスからフィールドをインポートしUsersました。

わかりました、アルゴリズム的には、これはやや簡単な作業ですね。

私の考えは、ファイルの内容を で読み取り、各行を文字列に保存してから、 を区切り文字としてStreamReader使用して文字列を部分に分割することでした。\tString.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 の異なる問題を読み、コピーし、貼り付け、コンパイルし、デバッグしましたが、まだどこにも行きません!

ファイルからデータを読み取り、それを DataGridView に貼り付ける適切な方法は何ですか?.txt

どんな助けや答えも大歓迎です!!

4

1 に答える 1