string fileName = Application.StartupPath + "//RecentFiles.config";
if (System.IO.File.Exists(fileName))
{
RecentFiles recnt = (RecentFiles)RecentFiles.Load(typeof(RecentFiles), fileName);
int k = this.tsmiRecent.DropDownItems.Count;
for (int i = recnt.Files.Count - 1; i >= 0; i--)
{
if (recnt.Files[i] == "")
{
continue;
}
ToolStripMenuItem menuitem = new ToolStripMenuItem(recnt.Files[i]);
this.tsmiRecent.DropDownItems.Insert(k, menuitem);
k++;
menuitem.Click += new EventHandler(menuitem_Click);
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace PCXEditor
{
public class RecentFiles
{
private List<string> _files=new List<string>();
public List<string> Files
{
get { return _files; }
set { _files = value; }
}
/// <summary>
/// 指定オブジェクトの属性値をxmlファイルに書き込む
/// </summary>
/// <param name="obj">指定オブジェクト</param>
/// <param name="fileName">xmlファイル名称(フルパス)</param>
/// <returns>
/// 正常に保存された場合 TRUE
/// エラー発生の場合 FALSE
/// </returns>
public static bool Save(object obj, string fileName)
{
try
{
MyXmlSerializer mxs = new MyXmlSerializer();
mxs.SerializeObject(obj, fileName);
return true;
}
catch (Exception)
{
return false;
}
}
/// <summary>
/// 指定型のオブジェクトの属性値をxmlファイルから読込む
/// </summary>
/// <param name="type">オブジェクトの型(Type)</param>
/// <param name="fileName">xmlファイル名称(フルパス)</param>
/// <returns></returns>
public static object Load(Type type, string fileName)
{
try
{
MyXmlSerializer mxs = new MyXmlSerializer();
return mxs.DeserializeObject(type, fileName);
}
catch (Exception)
{
return null;
}
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;
using System.IO;
namespace PCXEditor
{
public class MyXmlSerializer : System.Xml.Serialization.XmlSerializer
{
/// <summary>
/// オブジェクトをシリアル化し、XMLファイルに保存する
/// </summary>
/// <param name="obj">シリアル化する対象</param>
/// <param name="fileName">保存先のファイル名</param>
public void SerializeObject(object @obj, string @fileName)
{
XmlSerializer serializer = null;
FileStream fs = null;
try
{
//XmlSerializerオブジェクトを作成
//書き込むオブジェクトの型を指定する
serializer = new XmlSerializer(@obj.GetType());
//ファイルを作成
fs = new FileStream(@fileName, FileMode.Create);
//シリアル化し、XMLファイルに保存する
serializer.Serialize(fs, @obj);
}
catch (Exception)
{
}
finally
{
//閉じる
fs.Close();
}
}
/// <summary>
/// ArrayList型を含むクラスのオブジェクトをシリアル化し、XMLファイルに保存する
/// </summary>
/// <param name="obj">シリアル化する対象</param>
/// <param name="fileName">保存先のファイル名</param>
/// <param name="types">ArrayListに挿入できるオブジェクト型のType配列</param>
public void SerializeObject(object @obj, string @fileName,Type[] @types)
{
XmlSerializer serializer = null;
FileStream fs = null;
try
{
//XmlSerializerオブジェクトを作成
//書き込むオブジェクトの型を指定する
serializer = new XmlSerializer(@obj.GetType(), @types);
//ファイルを作成
fs = new FileStream(@fileName, FileMode.Create);
//シリアル化し、XMLファイルに保存する
serializer.Serialize(fs, @obj);
}
catch (Exception)
{
}
finally
{
//閉じる
fs.Close();
}
}
/// <summary>
/// XMLファイルから読み込み、逆シリアル化する
/// </summary>
/// <param name="fileName">保存先のファイル名</param>
/// <param name="type">逆シリアル化されるオブジェクトのType</param>
/// <returns></returns>
public object DeserializeObject(Type @type, string @fileName)
{
XmlSerializer serializer = null;
FileStream fs = null;
object obj = null;
try
{
//XmlSerializerオブジェクトの作成
serializer = new XmlSerializer(@type);
//ファイルを開く
fs = new FileStream(@fileName, FileMode.Open);
//XMLファイルから読み込み、逆シリアル化する
obj = serializer.Deserialize(fs);
//return
return obj;
}
catch (Exception)
{
return null;
}
finally
{
//閉じる
fs.Close();
}
}
}
}