目前C#编窗体winform程序,没使用皮肤更换,如果更改窗体背景,下次打开时能保持上次更改的。

初步思路,是有人说写个配置文件或什么xml,ini,里面就写窗体背景取值的代码,每次打开程序,先读取配置文件,更改窗体背景时就更改配置文件里的那具代码,把窗体背景值改了…... 初步思路,是有人说写个配置文件或什么xml,ini,里面就写窗体背景取值的代码,每次打开程序,先读取配置文件,更改窗体背景时就更改配置文件里的那具代码,把窗体背景值改了……但具体如何创建配置文件和代码不太懂……
如果我在配置文件里保存值如<configuration><appSettings>
<add key="backimagedirect" value=""/>
</appSettings></configuration>
修改key backimagedirect值,即图片路径。实现方法
public static void saveAPPCONFIG(String skeyname, String skeyvalue)
{
System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();
xmldoc.Load("App.config"); foreach (System.Xml.XmlNode xnode in xmldoc["configuration"]["appSettings"])
{
if (xnode.Name == "add")
{ if (xnode.Attributes.GetNamedItem("key").Value == skeyname)
xnode.Attributes.GetNamedItem("value").Value = skeyvalue; }
xmldoc.Save("App.config"); } }单击一按钮实现更换代码: saveAPPCONFIG("backimagedirect", Application.StartupPath + "\\pictures\\backgroudimage\\mianju.jpg");但是调度时更改了,后去看app.config文件里,backimagedirect值却没改变,为什么保存不了改变的值呢,哪里出错了哇
展开
 我来答
lizychn
2011-10-14 · TA获得超过542个赞
知道小有建树答主
回答量:624
采纳率:40%
帮助的人:199万
展开全部
直接在你应用程序的配置文件App.config中的AppSettings配置节中加一个配置节就可以
<add key="picPath" value="背景图片路径" />

读取使用如下:
//picPath存储图片路径
string picPath = ConfigurationManager.AppSettings["picPath"];

写入使用如下:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
AppSettingsSection app = config.AppSettings;
app.Settings["picPath"].Value = picPath;//picPath是你要设置的路径字符串变量
config.Save(ConfigurationSaveMode.Modified);
更多追问追答
追问
这样,还是保存不了更改的picpath 值,下次重新启动读出来的picPath还是之前的默认,并不是改变后的
追答
我这里试过是可以的啊,我前几天刚做的一个是存储程序内存量的,大于这个量程序自动重启,下面是我的事件中代码,你可参考:
每间隔时间判断程序内存消耗:
int memory = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["NormalMemory"]);

Process MyProcess = Process.GetCurrentProcess();
if (MyProcess.WorkingSet64 > memory * 1024 * 1024)
{
Application.DoEvents();
Application.Restart();
}

设置内存衡量标准
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["NormalMemory"].Value = nupdRAM.Value.ToString();
config.Save(ConfigurationSaveMode.Modified);
MessageBox.Show(this, "设置成功,系统将会重新启动!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
Application.Restart();

运行测试一切正常啊, 你再查看一下,建议断点在修改值那里,打开Config文件即时查看是否改变,这样来找原因,还有,改完后,你把BIN目录里的文件都删除了,重新生成项目
linux001
2011-10-13 · TA获得超过1401个赞
知道大有可为答主
回答量:1665
采纳率:100%
帮助的人:1362万
展开全部
这个很容易啊。简单点的你可以把值存到注册表 然后在初始化的时候取出来就行了。或者保存成文本文件也可以啊。如果写INI文件的话调用API操作会比较方便点。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
卿青鸟喜鸣春7256
2011-10-14
知道答主
回答量:34
采纳率:0%
帮助的人:14.3万
展开全部
第一:最好写在其它配置文件中
第二:程序运行时是使用:bin目录下的:“专案名.exe.config”文件,和App.config没关系.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
miniappshm9cqoc0b618
2011-10-14 · 超过19用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:31.3万
展开全部
学习中
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式