0

私は、テキスト ファイルを読み取り、テキストを各項目のブロックに整理することに取り組んできました。プログラムの使用中にデータを保存して呼び出す方法を見つけるのに助けが必要です。出力をデータグリッドビューとして表示しようとしています。これにアプローチする方法がわかりません。新しいブロックごとにデータ テーブルを作成できると考えていますが、その方法がわかりません。

これまでの私のコード:

public void findBlocks()
    {
        String fileName = "Drops.de";
        StreamReader streamReader = new StreamReader(fileName);
        String npcName;
        string npcID;
        string itemID;
        string itemAmount;
        string itemRarity;
        string itemName;

        while(!streamReader.EndOfStream){
            string line = streamReader.ReadLine();
            //start of block
            if(line.StartsWith("[")){
                npcName = line.TrimStart('[');
                npcName = npcName.TrimEnd(']');
                while(!line.StartsWith("[/")){
                    line = streamReader.ReadLine();
                    String[] s = line.Split(' ');
                    npcID = (s[0]);
                    itemName = (s[1]);
                    itemID = (s[2]);
                    itemAmount = (s[3]);
                    itemRarity = (s[4]);
                    DataTable dt = new DataTable();
                    DataGridViewRow dgv = new DataGridViewRow();

                    DataGridViewRow row = (DataGridViewRow)dataGridView1.Rows[0].Clone();
                    row.Cells[0].Value = itemName;
                    row.Cells[1].Value = itemID;
                    row.Cells[2].Value = itemAmount;
                    row.Cells[3].Value = itemRarity;
                    dataGridView1.Rows.Add(row);
                    dataGridView1.Refresh();
                    line = streamReader.ReadLine();
               //MessageBox.Show(npcName);
                }
            }
        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        search();
    }

    public void loadItemList(string file)
    {
        String fileName = file;
        StreamReader streamReader = new StreamReader(fileName);

        while (!streamReader.EndOfStream)
        {
            string currentLine = streamReader.ReadLine();
            string s;
            String id;
            String itemName = "";

            if (currentLine.Contains("item"))
            {
                s = currentLine.TrimStart('i', 't', 'e', 'm', ' ', '=', ' ');
                id = s.Split('.')[0];
                itemName = id.Split('\t')[1];
                id = id.Split('\t')[0];

                listBox1.Items.Add(itemName + " " + id);

            }
            else
            {
                streamReader.ReadLine();
            }

        }
        streamReader.Close();
    }

これは、並べ替えようとしているテキスト ファイルの例です。

[item1]
2550 coins 995 200000 7
2550 coins 995 200000 7
2550 coins 995 200000 7
2550 coins 995 200000 7
2550 coins 995 200000 7
[/item1]
[item2]
2550 coins 995 200000 7
2550 coins 995 200000 7
2550 coins 995 200000 7
2550 coins 995 200000 7
2550 coins 995 200000 7
[/item2]
[item3]
2550 coins 995 200000 7
2550 coins 995 200000 7
2550 coins 995 200000 7
2550 coins 995 200000 7
2550 coins 995 200000 7
[/item3]

等..

ありとあらゆる助けをいただければ幸いです:)

4

1 に答える 1

1

投稿の例はここにあります。主な手順は次のとおりです。

  1. xml を使用してデータを保存する
  2. xml からリストにデータを読み込む
  3. 次に、それをグリッド ビューにバインドします。

コード例は次のとおりです。

[Serializable]
class SomeProperty
{
    public int Count1 {get;set;}   //2550
    public int Count2 {get;set;}   //995
    public int Count3 {get;set;}   //200000
    public int Count4 {get;set;}   //7
}

List<SomeProperty> objects=new List<SomeProperty>();
objects.Add(...)

//Saving
XmlSerializer x = new XmlSerializer(objects.GetType());
using (FileStream stream = System.IO.File.Create(FilePath))
{
    XmlWriter writer = XmlWriter.Create(stream);
    x.Serialize(writer, objects);
}

//Reading
XmlSerializer x = new XmlSerializer(typeof(List<SomeProperty>));
using (FileStream fs = new FileStream(FilePath, FileMode.Open))
{
    XmlReader reader = new XmlTextReader(fs);
    var objects= (List<SomeProperty>)x.Deserialize(reader);
}
于 2013-04-25T05:29:22.893 に答える