在WinForms 2.0 C#应用程序中,用于在应用程序中保存和恢复表单位置和大小的典型方法是什么?
相关,是否可以在RUNTIME添加新的用户范围应用程序设置?我完全看到如何在设计时添加设置,这不是问题.但是如果我想在运行时创建一个呢?
更多细节:
我的应用程序是现有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(); }