.NETでListBox1.SaveToFileメソッドを使用したいのですが、そのメソッドに相当するものが見つかりません。私はMSDNライブラリサイトで検索しましたが、手ぶらで来ました。.NETに同等の方法はありますか?
前もって感謝します、
.NETでListBox1.SaveToFileメソッドを使用したいのですが、そのメソッドに相当するものが見つかりません。私はMSDNライブラリサイトで検索しましたが、手ぶらで来ました。.NETに同等の方法はありますか?
前もって感謝します、
素晴らしい質問です。あなたはあなた自身のメガクールな方法を作ることができます!
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.
最も賢明な解決策は、リストボックスの内容をXMLにシリアル化することだと思います
http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx