【问题标题】:UserControl: Best Method of Saving Values/PreferencesUserControl:保存值/首选项的最佳方法
【发布时间】:2015-09-03 00:02:55
【问题描述】:

我创建了一个 UserControl,它基本上是一个面板,其中包含用于设置用户偏好和值的各种控件(例如年龄、身高、男性/女性、...、文本框、单选按钮、复选框...)和它用于主要的 WinForm 应用程序。我正在寻找保存用户选择的“最佳”或最简单的方法,以便在下次应用程序加载时保留它们。

如果控件位于主 WinForm 上,我会使用 Properties.Settings 方法(但它们有很多,我不想这样做)。我还考虑过创建保存/加载方法并使用 XML 序列化,但这需要创建和更新大约 40 个属性。我可以使用 XML 方法,但我想请各位好心人看看是否有我不知道的更简单的方法。

谢谢!

【问题讨论】:

  • Properties.Settings 和 XML 类型序列化是专门为此目的而设计的。为什么人们总是想破解简单的选项?另一种选择是保存到数据库中,但这需要更多的努力。没有比 Properties.Settings 更容易的了。
  • @GlenThomas 因此我问这个问题。我熟悉这两种方法,并且过去曾使用它们来保存较小的首选项集,但我想我会问是否还有其他方法(例如 Properties.Settings 但用于 UserControls)我不知道。

标签: c# winforms user-controls


【解决方案1】:

我认为序列化和数据绑定的结合是要走的路,只需创建一个包含您要保存的所有设置的类,将它们绑定到控件,序列化并在退出表单并加载时保存它们当您加载表单时:

_settings = new Settings()
{
    Name = "Name",
    Name1 = "Name1",
    Name2 = "Name2"
};
textBox1.DataBindings.Add("Text", _settings, "Name");
textBox2.DataBindings.Add("Text", _settings, "Name1");
textBox3.DataBindings.Add("Text", _settings, "Name2");
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
   XmlSerializer ser = new XmlSerializer(typeof(Settings));
   using (Stream stream = File.OpenWrite("settings.xml"))
   {
       ser.Serialize(stream, _settings);
   }
}

【讨论】:

  • 谢谢,我会试一试。看起来不错。
猜你喜欢
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-01
  • 2011-12-30
  • 2010-10-19
  • 2022-01-05
  • 2020-09-22
相关资源
最近更新 更多