目前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值却没改变,为什么保存不了改变的值呢,哪里出错了哇 展开
如果我在配置文件里保存值如<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值却没改变,为什么保存不了改变的值呢,哪里出错了哇 展开
4个回答
展开全部
直接在你应用程序的配置文件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);
<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目录里的文件都删除了,重新生成项目
展开全部
这个很容易啊。简单点的你可以把值存到注册表 然后在初始化的时候取出来就行了。或者保存成文本文件也可以啊。如果写INI文件的话调用API操作会比较方便点。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一:最好写在其它配置文件中
第二:程序运行时是使用:bin目录下的:“专案名.exe.config”文件,和App.config没关系.
第二:程序运行时是使用:bin目录下的:“专案名.exe.config”文件,和App.config没关系.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
学习中
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询