问题描述
各位大侠,我现在创建了一个Form窗体,但是我在重复运行的时候窗体的位置总是不唯一,而且窗体的数据都是初始化的数值,我现在想要实现两个功能:1、窗体每次打开的时候都在固定位置,不会变来变去的;2、窗体每次打开的时候都保存上次编辑的值,而不是初始化的值。我有搜过相关文档,很多人推荐用注册表,但是我不懂注册表哎,我觉得http://www.csharpwin.com/csharpspace/4727r1017.shtml这个代码能解决我第一个问题只是我不太懂代码的意思。。。。。比如“publicstaticstringRegPath=@"SoftwareApp";”这个代码说是在HKEY_CURRENT_USER设置注册表的路径,可是HKEY_CURRENT_USER在哪个文件夹中呢??而且用他推荐的最后一个办法时我找不到变量ManagedWindowPlacement,是不是他给出的命名空间也不全呢。。。。真的是无从下手啊~~~第二个问题要用到数据存储,求大侠给菜鸟推荐比较好用又不深奥的数据存储方式~~
解决方案
解决方案二:
1.简单的设置一下窗口居中显示就完了,这样就不会随机跑到某个位置显示2.把信息存txt是最简单的了
解决方案三:
固定窗体位置的办法1.设置居中显示2.设置最大化显示3.在load里设置location属性你甚至可以在关闭时(closing事件里)将当前的位置和大小保存到文件,打开时读取文件并设置location和size
解决方案四:
引用2楼Z65443344的回复:
固定窗体位置的办法1.设置居中显示2.设置最大化显示3.在load里设置location属性你甚至可以在关闭时(closing事件里)将当前的位置和大小保存到文件,打开时读取文件并设置location和size
+1
解决方案五:
窗体每次在中间显示this.StartPosition=FormStartPosition.CenterScreen;不会注册表,写配置文件保存到指定位置也是可以的。如果要每次打开在以前位置,那就在窗体关闭前将窗体位置写到配置文件里面。一下参考://申明INI文件的写操作函数WritePrivateProfileString()[DllImport("kernel32",CharSet=CharSet.Auto,EntryPoint="WritePrivateProfileString")]privatestaticexternlongSaveINI(stringsection,stringkey,stringval,stringfilePath);publicstaticvoidWriteINI(stringAppName,stringKeyName,stringKeyValue,stringFileName){//写Ini文件SaveINI(AppName,KeyName,KeyValue,FileName);}publicstaticboolWriteHardWareList(){try{CreateMyDirectory(@"c:CommHDConfig");WriteINI("硬件配置","产品端口号",HardwareList.ProdutCOMPortNum.ToString(),HWPath);WriteINI("硬件配置","设备类型",HardwareList.DeviceType.ToString(),HWPath);
解决方案六:
引用2楼Z65443344的回复:
固定窗体位置的办法1.设置居中显示2.设置最大化显示3.在load里设置location属性你甚至可以在关闭时(closing事件里)将当前的位置和大小保存到文件,打开时读取文件并设置location和size
顶你也可以写进数据库……
解决方案七:
虽然主要是讲如何ping局域网ip和获取计算机名,mac地址的但是也做了读写文件和设置窗体位置,字体大小的功能,可以参考下
解决方案八:
感谢楼上各位亲的回复,目前使用居中的办法很好~~~对于窗体保持最新一次更新数值的操作,由于我的窗体是嵌套的,第一个窗体打开后点击一个按钮打开第二个窗体,再点击第二个窗体上的按钮打开第三个窗体,这样的话我用txt保存数据再在窗体打开的时候导入么???
解决方案:
做好规则记录,按规则提取初始时机在窗体New而未显示之前均可。
解决方案:
引用7楼u013115003的回复:
感谢楼上各位亲的回复,目前使用居中的办法很好~~~对于窗体保持最新一次更新数值的操作,由于我的窗体是嵌套的,第一个窗体打开后点击一个按钮打开第二个窗体,再点击第二个窗体上的按钮打开第三个窗体,这样的话我用txt保存数据再在窗体打开的时候导入么???
你完全可以将不同窗体的数据记录到不同的文件,而不是把什么乱七八糟的东西都放一起这样每个窗体关闭的时候写文件,打开的时候读文件,就完了.