【问题标题】:How to save settings from an windows form app using a savedialog如何使用保存对话框从 Windows 窗体应用程序保存设置
【发布时间】:2014-04-24 02:19:55
【问题描述】:
我有一个词搜索创建器应用程序。用户输入单词列表、宽度和高度设置、单词位置设置等。当用户单击保存按钮时,我希望将这些设置保存到文件中,以便用户稍后可以使用保存的设置。我不知道该怎么做。 (除了打开保存文件对话框)
【问题讨论】:
标签:
c#
visual-studio
windows-forms-designer
savefiledialog
【解决方案1】:
SaveFileDialog 只为您的应用程序提供一个 GUI Save As 窗口,允许用户选择保存位置和文件名。 Dialog 带有一个事件处理程序(我相信它称为 FileOK),您可以在其中访问 mySaveFileDialog.Filename 。
实际上尚未保存任何数据或文件。为此,您可以采取多种途径,但最简单的是使用 System.IO.StreamWriter:
using System.IO;
...
StreamWriter sw = new StreamWriter(mySaveFileDialog.Filename); //Pass the chosen filename
sw.WriteLine( string goes here );
sw.Close();
不过,您必须提出数据的字符串表示形式。
对于更复杂的类型,使用 XML 序列化。您可以将数据结构定义为类,然后使用 .NET 内置的 System.Xml.Serialization 命名空间自动将类的表示形式输出到易于阅读的 XML 文件:
public class MyWordGame {
public string[] myWords;
public int height;
...
}
...
XmlSerializer xmlOut = new XmlSerializer(MyWordGame.GetType());
xmlOut.Serialize(new FileStream(mySaveFileDialog.Filename), new MyWordGame());
然后您可以执行相反的操作(反序列化)以从 XML 文件中恢复原始类
有很多关于 XML 序列化的教程,你应该看看。
【解决方案2】:
打开项目属性,然后选择左侧选项卡上的“设置”。您可以添加任何想要保留的设置。
从用户那里获取您想要的任何设置,然后执行以下操作:
var setting = new Settings();
setting.MyCustomSetting = "UserSeting here";
setting.Save();
这些设置保存在 app.config 中。