C# 如何在user.config C中循环使用usersettings#
首先,我是个白痴,不能将问题格式化,所以我必须在一个代码块中发布这一切。 我的程序中有以编程方式添加的设置。 这些是这样添加的:C# 如何在user.config C中循环使用usersettings#,c#,settings,user.config,C#,Settings,User.config,首先,我是个白痴,不能将问题格式化,所以我必须在一个代码块中发布这一切。 我的程序中有以编程方式添加的设置。 这些是这样添加的: SettingsProperty SP = new SettingsProperty("LibImage" + AmountOfImages); SP.PropertyType = typeof(string); SP.DefaultValue = "goat"; SP.Provider = Settings.Default.P
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());
<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]);
}
}
这些将添加到user.config中,并显示如下:
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());
<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?解析user.config文件到XDoc的完整路径。 从这里开始,您可以将其读取为字符数组
string path = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath;
if (File.Exists(path))
{
XDocument XDoc = XDocument.Load(path);
foreach (var node in XDoc.Nodes())
{
if (!string.IsNullOrEmpty(node.ToString()))
{
string S = node.ToString();
string Word = "";
for (int i = 0; i < S.Length; i++)
{
if (IsAcceptedChar(S[i])) Word += S[i];
else
{
if (Word == "setting name")
{
string path=ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath;
if(File.Exists(path))
{
XDocument XDoc=XDocument.Load(路径);
foreach(XDoc.Nodes()中的var节点)
{
如果(!string.IsNullOrEmpty(node.ToString()))
{
字符串S=node.ToString();
字串=”;
对于(int i=0;i