2

我正在使用这个库http://www.codeproject.com/Articles/28064/Global-Mouse-and-Keyboard-Library来录制宏。我想知道如何将“事件”保存在文本文件中以便以后加载?

所以,这里是列表:

List<MacroEvent> events = new List<MacroEvent>();

我需要做什么才能将数据放入文本文件?

4

4 回答 4

3

您有 3 个选项:

  1. 使用 ToString() 方法将 MacroEvent 导出为格式化文本。您可能需要覆盖默认实现。确保输入您需要的所有信息,否则您以后将无法检索它们。然后需要读取和解析文件以加载数据。

  2. 使用内置的 .net XML 序列化功能。写/读操作很简单。

    http://msdn.microsoft.com/en-us/library/ms950721.aspx

    http://support.microsoft.com/kb/815813

  3. 如果您不打算在另一个应用程序上使用数据,为什么不使用 BinarySerializer?到目前为止,最好的方法,但生成的文件不会是文本格式。

    http://www.codeproject.com/Articles/1789/Object-Serialization-using-C

于 2012-08-14T13:35:03.703 回答
0

如果MacroEventToString()可用的方法,您可以简单地遍历列表并打印到您的文本文件。

于 2012-08-14T13:22:38.740 回答
0
TextWriter tw = new StreamWriter("myFile.txt");
foreach (MacroEvent item in events)
{
    tw.WriteLine(item.ToString());   
}
tw.Close();
于 2012-08-14T13:23:48.483 回答
0

我建议使用扩展方法。我对此一无所知MacroEvent,也不打算从 Code Project 下载代码只是为了看看,但这就是它的样子。

public static class MacroEventExtensions
{
    public static void WriteToFile(this List<MacroEvent> events, string path)
    {
        StringBuilder fileContents = new StringBuilder();
        foreach (var e in events)
        {
            fileContents.AppendLine("{0}::{1}",
                [some event id from the object],
                [some event message from the object]);
        }

        File.WriteAllText(path, fileContents.ToString());
    }
}

然后在上面的代码中你只需调用:

events.WriteToFile([some path])
于 2012-08-14T13:25:37.307 回答