我想在注册表中保存窗口的边界,因为我使用代码:
dialogView.Save("WindowPosition", this.DesktopBounds.ToString());
dialogView是我想要保存它们的路径。它可以保存一切 例如:
{X=54,Y=153,Width=723,Height=555}
但是获得它们的最佳方式是什么,因为我可以从注册表中获取类型 可以是字符串 例如:
dialogView.Load("WindowPosition",string.Empty,out position);
但如何将字符串转换为矩形到init设置为窗口我不知道?有人会建议吗?
答案 0 :(得分:9)
RectangleConverter r = new RectangleConverter();
var rectangleAsString= r.ConvertToString(this.DesktopBounds);
var rectangle = (Rectangle)r.ConvertFromString(rectangleAsString);
答案 1 :(得分:2)
使用正则表达式:
{X=(\d+),\s*Y=(\d+),\s*Width=(\d+),Height=(\d+)}
请参阅演示 here。
Match groups:
1. 54
2. 153
3. 723
4. 555
答案 2 :(得分: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));