1

我想将窗口的边界保存在注册表中,为此我使用代码:

dialogView.Save("WindowPosition", this.DesktopBounds.ToString());

dialogView 是我要保存它们的路径。它可以保存一切正常示例:

{X=54,Y=153,Width=723,Height=555}

但是获取它们的最佳方法是什么,因为我可以从注册表中获取的类型可以是字符串示例:

dialogView.Load("WindowPosition",string.Empty,out position);

但是如何将字符串转换为矩形到初始化设置到窗口我不知道?有人可以提出一些建议吗?

4

3 回答 3

11

尝试RectangeConverter

RectangleConverter r = new RectangleConverter();

var rectangleAsString= r.ConvertToString(this.DesktopBounds);

var rectangle = (Rectangle)r.ConvertFromString(rectangleAsString);
于 2012-05-08T11:38:50.713 回答
3

使用正则表达式模式:

{X=(\d+),\s*Y=(\d+),\s*Width=(\d+),Height=(\d+)}

在此处查看演示

Match groups:
1.  54
2.  153
3.  723
4.  555
于 2012-05-08T11:34:19.693 回答
0
var matches = Regex.Match("{X=54,Y=153,Width=723,Height=555}",
                           @"\D*(\d+)\D*(\d+)\D*(\d+)\D*(\d+)");

var rect = new Rectangle(int.Parse(matches.Groups[1].Value),
                         int.Parse(matches.Groups[2].Value),
                         int.Parse(matches.Groups[3].Value),
                         int.Parse(matches.Groups[4].Value));
于 2012-05-08T11:33:23.627 回答