如何从C#中的注册表项设置窗口大小?
我正在尝试这样做,当我的C#应用程序关闭时,它会将窗口的大小和位置保存到注册表中,然后在启动时将窗口更改为这些大小。当我以这种方式尝试时,我遇到了一个错误:如何从C#中的注册表项设置窗口大小?,c#,registry,C#,Registry,我正在尝试这样做,当我的C#应用程序关闭时,它会将窗口的大小和位置保存到注册表中,然后在启动时将窗口更改为这些大小。当我以这种方式尝试时,我遇到了一个错误: Microsoft.Win32.RegistryKey key; key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Software\\Pandora"); //key.SetValue("Size", this.Size);
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Software\\Pandora");
//key.SetValue("Size", this.Size);
//key.SetValue("Location", this.Location);
//key.SetValue("Browser", Browser.Location);
this.Size = new System.Drawing.Size(key.GetValue("Size").ToString());
key.Close();
我需要做什么才能将this.size设置为“size”值
==编辑==
与
我得到了错误:
错误1最佳重载方法
相配
'系统.绘图.大小.大小(int,int)'
有一些是无效的
参数C:\Users\Sean\Documents\Visual
演播室
2010\Projects\Pandora\Pandora\Form1.cs 23 25 Pandora
错误2参数1:无法转换
从“字符串”到
“int”C:\Users\Sean\Documents\Visual
演播室
2010\Projects\Pandora\Pandora\Form1.cs 23 49 Pandora
错误3参数2:无法转换
从…起
“Microsoft.Win32.RegistryValueKind”到
“int”C:\Users\Sean\Documents\Visual
演播室
2010\Projects\Pandora\Pandora\Form1.cs 23 82 Pandora
如果我将其更改为:
this.Size = new System.Drawing.Size(key.GetValue("Size").ToString());
结果是
错误1最佳重载方法
相配
'系统.图纸.尺寸.尺寸(系统.图纸.点)'
有一些是无效的
参数C:\Users\Sean\Documents\Visual
演播室
2010\Projects\Pandora\Pandora\Form1.cs 23 25 Pandora
错误2参数1:无法转换
从“字符串”到
'System.Drawing.Point'C:\Users\Sean\Documents\Visual
演播室
2010\Projects\Pandora\Pandora\Form1.cs 23 49 Pandora
及
给我
错误1最佳重载方法
相配
'系统.图纸.尺寸.尺寸(系统.图纸.点)'
有一些是无效的
参数C:\Users\Sean\Documents\Visual
演播室
2010\Projects\Pandora\Pandora\Form1.cs 23 25 Pandora
错误2参数1:无法转换
从“对象”到
'System.Drawing.Point'C:\Users\Sean\Documents\Visual
演播室
2010\Projects\Pandora\Pandora\Form1.cs 23 49 Pandora
我同意使用注册表不是最好的主意。 不过,您可能想考虑将宽度和高度分开,而不是试图存储一个“大小”< /p>。
另外,您具体遇到了什么错误?我同意使用注册表不是最好的主意。 不过,您可能想考虑将宽度和高度分开,而不是试图存储一个“大小”< /p>。
另外,您具体得到了什么错误?您的错误是因为无法使用字符串创建新的“大小”。大小是一个复杂的数据类型,需要初始化两个数字(宽度和高度)。您正试图用单个字符串初始化它 例如:如果注册表中的值为“30500”,那么这样说是否有意义:
this.Size = 3500;
无法确定窗户的尺寸。你需要分开宽度和高度,并将它们存储在两个分开的键中(参见我之前的文章)
检索值时,需要解析它们,因为“Size”需要两个int而不是两个字符串。尝试以下方法:
string sHeight = key.GetValue("SizeHeight");
string sWidth = key.GetValue("SizeWidth");
int iHeight = Int32.Parse(sHeight);
int iWidth = Int32.Parse(sWidth);
Size size = new Size(iWidth, iHeight);
this.Size = size;
您可能需要对代码进行一些调整,但这应该是一个很好的起点。您的错误是因为无法使用字符串创建新的“大小”。大小是一个复杂的数据类型,需要初始化两个数字(宽度和高度)。您正试图用单个字符串初始化它 例如:如果注册表中的值为“30500”,那么这样说是否有意义:
this.Size = 3500;
无法确定窗户的尺寸。你需要分开宽度和高度,并将它们存储在两个分开的键中(参见我之前的文章)
检索值时,需要解析它们,因为“Size”需要两个int而不是两个字符串。尝试以下方法:
string sHeight = key.GetValue("SizeHeight");
string sWidth = key.GetValue("SizeWidth");
int iHeight = Int32.Parse(sHeight);
int iWidth = Int32.Parse(sWidth);
Size size = new Size(iWidth, iHeight);
this.Size = size;
您可能需要对代码进行一些调整,但这应该是一个很好的起点。:
:
你为什么要使用注册表。NET有一种用于应用程序设置(XML文件)的机制:(MSDN——还提到了注册表设置)。还有:你为什么要使用注册表。NET有一种用于应用程序设置(XML文件)的机制:(MSDN——还提到了注册表设置)。另外:Damián,如果将来链接中断,您可能需要在答案中包含使用说明和一些示例实现代码。Damián,如果将来链接中断,您可能需要在答案中包含使用说明和一些示例实现代码。
string sHeight = key.GetValue("SizeHeight");
string sWidth = key.GetValue("SizeWidth");
int iHeight = Int32.Parse(sHeight);
int iWidth = Int32.Parse(sWidth);
Size size = new Size(iWidth, iHeight);
this.Size = size;
static Size.Parse(string );