0

.NETでListBox1.SaveToFileメソッドを使用したいのですが、そのメソッドに相当するものが見つかりません。私はMSDNライブラリサイトで検索しましたが、手ぶらで来ました。.NETに同等の方法はありますか?

前もって感謝します、

4

2 に答える 2

2

素晴らしい質問です。あなたはあなた自身のメガクールな方法を作ることができます!

public static class ListBoxExtensions
{
    public static IEnumerable<TData> GetData<TData>(this ListBox listbox)
    {
        var data = new List<TData>();
        foreach (var item in listbox.Items)
        {
            data.Add((TData) item);
        }
        return data;
    }

    public static void SetData<TData>(this ListBox listbox, IEnumerable<TData> dataToSet)
    {
        listbox.Items.Clear();

        foreach (var item in dataToSet)
        {
            listbox.Items.Add(item);
        }
    }
}

public static class SerializerHelper
{
    public static void Save<TXmlSerializableData>(IEnumerable<TXmlSerializableData> data, string outputFile)
        where TXmlSerializableData : class
    {
        if (File.Exists(outputFile))
        {
            File.Delete(outputFile);
        }
        var serializer = new XmlSerializer(typeof (TXmlSerializableData));
        using (var stream = File.OpenWrite(outputFile))
        {
            foreach (var item in data)
            {
                serializer.Serialize(stream, item);
            }
        }
    }

    public static IEnumerable<TData> Load<TData>(string inputFile)
        where TData: class
    {
        var result = new List<TData>();
        if (!File.Exists(inputFile))
        {
            return result;
        }
        var serializer = new XmlSerializer(typeof(TData));
        using (var stream = File.OpenRead(inputFile))
        {
            TData itemToAdd;
            do
            {
                itemToAdd = (TData) serializer.Deserialize(stream);
                if (itemToAdd != null)
                {
                    result.Add(itemToAdd);
                }
            } while (itemToAdd != null);
        }
        return result;
    }
}
var data = listbox.GetData<TSerializableType>();
SerializerHelper.Save(data, "Secret file.txt");
and your type must be serializable and marked with [XmlSerializable] attribute.
于 2012-05-01T20:05:59.453 に答える
1

最も賢明な解決策は、リストボックスの内容をXMLにシリアル化することだと思います

http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx

于 2012-05-01T20:02:38.310 に答える