0

データをリストビューに保存するにはどうすればよいですか?

たとえば、ユーザーがリストビューに何かを入力してからアプリケーションを閉じると、その情報はすべて失われます。リストビューに何かを入れるとすぐに情報を保存する方法はありますか?

これは、テキスト ボックスから listView1 に情報を入力するために使用するコードです。

  string[] items = { titletxt.Text, statustxt.Text };
        ListViewItem lvi = new ListViewItem(items);
        listView1.Items.Add(lvi);

更新 (2012 年 12 月 29 日)

助けてくれてありがとう!しかし、私はそれを機能させることができないようです。私は本当に簡単なフォームを作成して、それを機能させようとしました。3 つのテキスト ボックス (NameTxt、AgeTxt、HairColourTxt)、ボタン、およびリストビュー (ListOfPeople) があります。

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

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

namespace listview
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string[] items = { NameTxt.Text, AgeTxt.Text, HairColourTxt.Text };
            ListViewItem lvi = new ListViewItem(items);
            ListOfPeople.Items.Add(lvi);
        }
    }
}

@user574632 & @Joe & @DmitryKvochkin によって投稿されたコードを追加しようとしましたが、ビットを変更しましたが、まだ機能しません。何が間違っているのかわかりませんか?私はこれを追加しようとしました:

     private void saveListOfPeopleItems(string path, ListView lv)
    {
        var delimeteredListviewData = new List<string>();

        foreach (ListViewItem lvi in lv.Items)
        {
            string delimeteredItems = string.Empty;
            foreach (ListViewItem.ListViewSubItem lvsi in lvi.SubItems)
            {
                delimeteredItems += lvsi.Text + "#";
            }
            delimeteredListviewData.Add(delimeteredItems);
        }

        System.IO.File.WriteAllLines(path, delimeteredListviewData.ToArray());
    }

    private void loadListOfPeopleItems(string path, ListView lv)
    {

        foreach (string line in System.IO.File.ReadAllLines(path))
        {
            lv.Items.Add(new ListViewItem(line.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries)));
        }
    }
4

4 に答える 4

1

テキストファイルに保存する場合は、次を使用できます。

 private void saveListViewItems(string path, ListView lv)
    {
        var delimeteredListviewData = new List<string>();

        foreach (ListViewItem lvi in lv.Items)
        {
            string delimeteredItems = string.Empty;
            foreach (ListViewItem.ListViewSubItem lvsi in lvi.SubItems)
            {
                delimeteredItems += lvsi.Text + "#";
            }
            delimeteredListviewData.Add(delimeteredItems);
        }

        System.IO.File.WriteAllLines(path, delimeteredListviewData.ToArray());
    }

    private void loadListViewItems(string path, ListView lv)
    {

        foreach (string line in System.IO.File.ReadAllLines(path))
        {
            lv.Items.Add(new ListViewItem(line.Split(new char[]{'#'}, StringSplitOptions.RemoveEmptyEntries)));
        }
    }
于 2012-12-28T22:55:55.963 に答える
1

保存ロジックを作成する必要があります。自動メソッドはありません。

最も簡単な方法は、Serialization( を探してISerializable) を使用して、選択したファイルに保存することです (好きな名前を付けます)。この方法でオブジェクト全体を保存できます。シリアル化に関する簡単なチュートリアルを次に示します。

もう 1 つの方法は、リストビューのコンテンツを文字列に解析し (必要なものだけを保持)、文字列をテキスト ファイルに保存することです (TextReaderおよびTextWriter)。

アプリケーション設定 (ユーザー データではなく) を保存したい場合は、このリンクを参照するか、読みやすいと思われるリンクを参照してください。

最後に、定期的に保存するデータを操作する必要がある場合、または保存するデータが多い場合は、データベース (SQL、mySQL など) を使用します。後者の方法は、実装するのに最も時間がかかります。

于 2012-12-28T21:40:19.747 に答える
0

統合されたビジュアルスタジオ設定を使用して、デザイナーでもリストビューにバインドできます。リストビューを変更したら、それらを保存できます

于 2012-12-28T21:59:41.500 に答える
-1

答えは次のとおりです。.txt ファイルを使用する また、SQL データベースを作成してそこに保存することもできます...

于 2012-12-28T21:33:16.947 に答える