繁体   English   中英

如何通过C#中的注册表项设置窗口大小?

[英]How do I set the window size from a registry key in C#?

我正在尝试使其关闭,从而在我的C#应用​​程序关闭时将窗口的大小和位置保存到注册表中,然后在启动时将窗口更改为那些大小。 以这种方式尝试时出现错误:

        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”值?

==编辑==

this.Size = new System.Drawing.Size(key.GetValue("Size").ToString(), Microsoft.Win32.RegistryValueKind.String);

我得到了错误:

错误1'System.Drawing.Size.Size(int,int)'的最佳重载方法匹配具有一些无效的参数C:\\ Users \\ Sean \\ Documents \\ Visual Studio 2010 \\ Projects \\ Pandora \\ Pandora \\ Form1.cs 23 25潘多拉

错误2参数1:不能从'字符串'转换为'int'C:\\ Users \\ Sean \\ Documents \\ Visual Studio 2010 \\ Projects \\ Pandora \\ Pandora \\ Form1.cs 23 49 Pandora

错误3参数2:不能从'Microsoft.Win32.RegistryValueKind'转换为'int'C:\\ Users \\ Sean \\ Documents \\ Visual Studio 2010 \\ Projects \\ Pandora \\ Pandora \\ Form1.cs 23 82 Pandora

如果我将其更改为:

this.Size = new System.Drawing.Size(key.GetValue("Size").ToString());

结果是

错误1'System.Drawing.Size.Size(System.Drawing.Point)'的最佳重载方法匹配具有一些无效的参数C:\\ Users \\ Sean \\ Documents \\ Visual Studio 2010 \\ Projects \\ Pandora \\ Pandora \\ Form1.cs 23 25潘多拉

错误2参数1:无法从'字符串'转换为'System.Drawing.Point'C:\\ Users \\ Sean \\ Documents \\ Visual Studio 2010 \\ Projects \\ Pandora \\ Pandora \\ Form1.cs 23 49 Pandora

this.Size = new System.Drawing.Size(key.GetValue("Size"));

给我

错误1'System.Drawing.Size.Size(System.Drawing.Point)'的最佳重载方法匹配具有一些无效的参数C:\\ Users \\ Sean \\ Documents \\ Visual Studio 2010 \\ Projects \\ Pandora \\ Pandora \\ Form1.cs 23 25潘多拉

错误2参数1:无法从“对象”转换为“ System.Drawing.Point” C:\\ Users \\ Sean \\ Documents \\ Visual Studio 2010 \\ Projects \\ Pandora \\ Pandora \\ Form1.cs 23 49 Pandora

我同意使用注册表不是最好的主意。 尽管如此,您可能要考虑将宽度和高度分开,而不是尝试存储类型“ Size”

Size size = this.Size;
int width = size.Width;
int height = size.Height;
// Now store "width" and "height" in their own key...
// ...
// ...
key.SetValue("SizeWidth", width.ToString(), Microsoft.Win32.RegistryValueKind.String);
key.SetValue("SizeHeight", height.ToString(), Microsoft.Win32.RegistryValueKind.String);

另外,您会具体遇到什么错误?

您的错误是因为您无法使用字符串创建新的“大小”。 大小是一个复杂的数据类型,需要初始化两个数字(宽度和高度)。 您正在尝试使用单个字符串对其进行初始化。

例如:如果注册表中的值为“ 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;

您可能必须对代码进行一些调整,但这应该是一个不错的起点。

使用

static Size.Parse(string );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM