C# 如何在WPF多窗口应用程序中动态加载和保存用户设置?
我正在尝试在WPF应用程序中保存用户设置。我想保存他们的窗口位置和大小。为此,我激励自己 我稍微更改了保存代码以执行以下操作:C# 如何在WPF多窗口应用程序中动态加载和保存用户设置?,c#,.net,wpf,visual-studio,settings,C#,.net,Wpf,Visual Studio,Settings,我正在尝试在WPF应用程序中保存用户设置。我想保存他们的窗口位置和大小。为此,我激励自己 我稍微更改了保存代码以执行以下操作: var oBaseProp = Properties.Settings.Default.Properties["baseProp"]; Properties.Settings.Default["baseProp"] = "1"; System.Configuration.SettingsProperty property
var oBaseProp = Properties.Settings.Default.Properties["baseProp"];
Properties.Settings.Default["baseProp"] = "1";
System.Configuration.SettingsProperty property = new System.Configuration.SettingsProperty("W_" + this.GetType().FullName + "_PLACEMENT"
, typeof(string), oBaseProp.Provider, false, GetPlacement(this), System.Configuration.SettingsSerializeAs.String, oBaseProp.Attributes,
false, false);
Properties.Settings.Default.Properties.Add(property);
Properties.Settings.Default["W_" + this.GetType().FullName + "_PLACEMENT"] = GetPlacement(this);
Properties.Settings.Default.Save();
BaseProp是在我的设置中定义的字符串属性,它是无用的,只用于检索提供者和其他内容
保存时一切正常,我在C:\Users\christophe.mom.DOMAINE-EPSILOG\AppData\Local\EPSILOG\msante\u GUI.vshost.exe\u Url\fkwxpmo4exiyrjk2vha2qu2upx5sgrvn\1.0.0.0路径中有一个新文件,user.config包含所需的数据
问题是,我无法将此文件作为设置文件加载:
void StandardWindow_SourceInitialized(object sender, EventArgs e)
{
try
{
Properties.Settings.Default.Reload();
var sPlacement = (string)Properties.Settings.Default.Properties["W_" + this.GetType().FullName + "_PLACEMENT"].DefaultValue;
if (!string.IsNullOrWhiteSpace(sPlacement))
{
this.SetPlacement(this, sPlacement);
}
}
catch { }
}
我不明白为什么我的实际设置没有加载。我也尝试了执行(而不是调试)模式,但仍然没有结果
有人有主意吗
谢谢 事实上,这只适用于在发行版中编译的执行模式(在我的例子中)。它可能与您订阅的事件有关。尝试检查句柄是否已创建。如果没有,请使用另一个事件进行订阅。“未加载”是什么意思?已加载但未应用或确实未加载异常或其他内容?我没有任何异常,我只在defaut.properties中看不到我的设置键,它存在于磁盘上的文件中(不在visual studio中,因为所有设置都是在运行时完成的)。我重写onsourceinitialized而不是event,它不会改变任何东西,因此,在调试器中,您无法找到设置,这些设置是您在适当的索引器下正确保存到磁盘的?是的,似乎加载了错误的设置文件(默认情况下是一个,而不是我的appData目录中的一个)Hmmm,根据您告诉的代码加载默认值。通过使用XML文件和appConfig关键字来存储这些设置,我知道这种方法。