1

私は自分のプロジェクトに合った解決策を見つけようと何時間も研究に費やしてきましたが、うまくいきませんでした。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace CustomerApplication
{
    public partial class ListAllCustomersForm : Form
    {   // default constructor method

    public ListAllCustomersForm()
    {
        InitializeComponent();
        /* Since this is the first method to be executed
         * call the displayCustomers method to populate
         * the list */


        displayCustomers();
    } // End of constructor

    // okButton Click method
    private void okBtn_Click(object sender, EventArgs e)
    {
        // retrieve hidden form's memory address
        Form myParentForm = CustomerAppStart.getParentForm();
        // now that we have the address use it to display the parent Form
        myParentForm.Show();
        //Finally close this form
        this.Close();
    } // end of okButton Click method
    //display the customers
    public void displayCustomers()
    {


        //format the header in the text box
        customerList.Text = ""; //Clear the textbox
        customerList.AppendText(
        "-------------------------------------------------- \r\n");
        customerList.AppendText(
        "Name Address Zip \r\n");
        customerList.AppendText(
        "-------------------------------------------------- \r\n");
        //local variables
        String name = "";
        String address = "";
        int zip = 0;
        //get all customers
        Customer[] myCustArray = Customer.getAllCustomers();
        //loop thru the array and display all the data


        for (int k = 0; k < myCustArray.Length; k++)
        {

            if (myCustArray[k] != null)
            {
               StreamWriter Writer = new StreamWriter(@"C:\Users\Jake\Documents\college\CIS340\data.csv", true);

                 Writer.Write(myCustArray[k].getCustomerName() + "," + myCustArray[k].getCustomerAddress() + "," + myCustArray[k].getCustomerZip() + ",");
                 Writer.Close();

                 StreamReader Reader = new StreamReader(@"C:\Users\Jake\Documents\college\CIS340\data.csv");
                 Reader.ReadToEnd();

                //get the customer attributes for this customer
                name = myCustArray[k].getCustomerName();
                address = myCustArray[k].getCustomerAddress();
                zip = myCustArray[k].getCustomerZip();
                //format the data
                name = name.PadRight(20, ' ');
                address = address.PadRight(23, ' ');
                //display it to the textBox
                this.customerList.AppendText(name + " " +
                address + " " + zip + "\r\n");
            }//end if not null

        }//end for loop
    }//end displayCustomers method


} // end of class definition
} // end of namespaces

このコードにより、テキスト ボックスをフォーマットし、作成した配列にヘッダーを与えることができます。また、「AddCustomerForm.cs」からのユーザー入力を .CSV ファイルに書き込むこともできます。このファイルをローカルでチェックして、値が追加されていることを確認できます。

私が抱えている問題は、.CSV ファイルから読み取って、書式設定されたテキスト ボックスにテキストを表示することです。

何を試しても、同じデバッグ セッション中に新しい顧客を追加しようとした場合を除き、空白の書式設定されたフォームしか表示されません。その場合、ユーザーの入力は "AddCustomerForm. cs」。

繰り返しになりますが、これが初心者の質問のように思われる場合は申し訳ありません。私はしばらくの間調査を行ってきましたが、明確な解決策はありません. 誰でも提供できる助けをいただければ幸いです。

4

1 に答える 1

0

Reader.ReadToEnd() 呼び出しの結果を使用していないだけで、それを読み取ってからそれらを取り除きます。

StreamReader のReadLineメソッドで行を読み取ってみてください。

于 2012-12-08T09:03:06.903 に答える