首先,我是一个白痴,无法将问题格式化,所以我必须将这些全部发布在一个代码块中。我的程序中有以编程方式添加的设置。这些是这样添加的:
SettingsProperty SP = new SettingsProperty("LibImage" + AmountOfImages);
SP.PropertyType = typeof(string);
SP.DefaultValue = "goat";
SP.Provider = Settings.Default.Providers["LocalFileSettingsProvider"];
SP.Attributes.Add(typeof(UserScopedSettingAttribute), new UserScopedSettingAttribute());
Settings.Default.Properties.Add(SP);
Settings.Default.Reload();
Settings.Default.Save();
Settings.Default["LibImage" + AmountOfImages] = OFD.FileName;
MessageBox.Show(Settings.Default["LibImage" + AmountOfImages].ToString());
这些被添加到 user.config 并显示如下:
<setting name="LibImage1" serializeAs="String">
<value>C:\Users\User\Background\Biggie.jpg</value>
</setting>
<setting name="LibImage2" serializeAs="String">
<value>C:\Users\User\Background\BUSTA-RHYMES.jpg</value>
</setting>
当我重新启动程序时,我想将所有这些图像添加到这样的面板中:
int i = 0;
Settings.Default.Reload();
foreach (SettingsProperty P in Settings.Default.Properties)
{
MessageBox.Show(P.Name);
//part below not relevant for question
if (P.Name.StartsWith("LibImage"))
{
i++;
IMG = Image.FromFile(P.DefaultValue.ToString());
PanelImgAr[AmountOfImages] = new SelectablePanel()
{
Size = new Size(150, 84),
Location = new Point(0, -84 + (94 * i)),
BackgroundImage = IMG,
BackgroundImageLayout = ImageLayout.Stretch
};
PanelImgAr[AmountOfImages].Click += new EventHandler(SelectablePanel_Click);
PanelImages.Controls.Add(PanelImgAr[AmountOfImages]);
}
}
但是 MessageBox 没有给我任何名字。这可能是因为 Settings.Default.Properties 循环通过 App.config。谁能告诉我如何遍历 user.config?或者我如何将 user.config 中的设置添加到 App.config?