日期:2014-05-18  浏览次数:20717 次

高分!!!请高手进来求一功能实现!
我想实现如下一个效果:

我在一个程序中无法知道 一个 button 它的属性是如何设置的。
我利用反射获取到了它的属性网格显示出来后,我可以对它进行设置和修改了。
在此时我想实现的一个效果就是,把反射后我对这个button 所做的修改完全的保存下来,下次我打开程序的时候我说看到的就是
新设置的这个button。 我不保存的情况下 button自动的还原层原始状态。


不知道这个功能是否能实现?如果可以实现如何实现,最少能把实现思路说下~~~~~~

------解决方案--------------------
可以将用户的设置保存在你的配置文件中,这样下次打开的时候再应用回去就可以了。
配置文件的格式示例如下:
XML code

<userPerference>
  <controls>
    <control id="button">
      <properties>
        <property name="ForeColor" value="Red" />
        <property name="Size" value="100,40" />
      <properties>
    </control>
  </controls>
</userPerference>

------解决方案--------------------
Tolgahan's Form Property Saver
https://secure.codeproject.com/KB/cs/TolgahanFormPropertySaver.aspx?fid=459883&df=90&mpp=25&noise=3&sort=Position&view=Quick
------解决方案--------------------
或者把属性值写进 INI文件里也可以
C# code
using System.Runtime.InteropServices;
[DllImport("kernel32")]//写入INI文件
        private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);

        [DllImport("kernel32")]//读取INI文件
        private static extern long GetPrivateProfileString(string section, string key, string def, StringBuilder retVal,int size, string filePath);

------解决方案--------------------
建一个Map分别对应该Button的属性和设置值
既然有了反射的使用 那一切变得方便了
如果单机程序就把map设置为静态的

这样随时可以调用 如果不是单机就把它放到页面的主界面去,设置一个值就增加一个map元素,

然后每次打开界面用map来遍历需要恢复状态button,将属性一一还原

在这里我建议一下 其实大多数的button可用属性并不多且多为true,false类型

楼主不如建立几种状态的button同时覆盖,然后根据状态判断是哪个让他visable为true显示出来就好