在WinForms 2.0 C#应用程序中,在应用程序中用于保存和恢复表单位置和大小的典型方法是什么?
相关的是,是否可以在RUN RUN中添加新的用户范围的应用程序设置?我完全看到如何在设计时添加设置,这不是问题.但是如果我想在运行时创建一个?
更多细节:
我的应用程序是现有Visual FoxPro应用程序的转换.我一直在尝试尽可能多地阅读应用程序设置,用户设置等,并以.Net的方式清除自己的事情,但仍然有几件我困惑的事情.
在Fox应用程序中,保存的设置存储在注册表中.我的表单是子类,我有基类代码,自动将表单位置和大小保存在表单名称中键入的注册表中.每当我创建一个新的表单,我不必做任何特别的事情来得到这个行为;它是建立在基础类.我的.Net表单也是子类,这部分工作得很好.
在.Net中,我得到我应该使用用户作用域设置的用户喜好的印象.表单的大小和位置绝对好像用户偏好.但是,我看不到任何方式自动将这些设置添加到项目中.换句话说,每当我向我的项目添加一个新表单(并且它们是100的表单)时,我必须记住添加一个用户范围的应用程序设置,并确保给它与表单相同的名称,即“ FormMySpecialSizePosition“来保存大小和位置.我宁愿不必记住这样做.这是否只是艰难的运气?或者我是通过尝试使用用户范围的设置来完全错误的树?我需要创建自己的XML文件以保存设置,以便我可以做任何我想要的(即在运行时添加一个新的设置)?或者是其他东西?
当然这是很常见的,有人可以告诉“正确”的做法.提前致谢!
解决方法
private void Form1_Load( object sender,EventArgs e ) { // restore location and size of the form on the desktop this.DesktopBounds = new Rectangle(Properties.Settings.Default.Location,Properties.Settings.Default.Size); // restore form's window state this.WindowState = ( FormWindowState )Enum.Parse( typeof(FormWindowState),Properties.Settings.Default.WindowState); } private void Form1_FormClosing( object sender,FormClosingEventArgs e ) { System.Drawing.Rectangle bounds = this.WindowState != FormWindowState.Normal ? this.RestoreBounds : this.DesktopBounds; Properties.Settings.Default.Location = bounds.Location; Properties.Settings.Default.Size = bounds.Size; Properties.Settings.Default.WindowState = Enum.GetName(typeof(FormWindowState),this.WindowState); // persist location,size and window state of the form on the desktop Properties.Settings.Default.Save(); }