WPF中最小化的窗口位置
问题描述:
我试图将自定义对话框的位置保存到用户注册表中,以便当它们重新加载同一个对话框时,它将出现在它们移动或调整到之前的相同位置。 我保存的Windows X位置Y位置的宽度和高度。除了最小化对话框时,它一切正常。如果对话框被最小化,并且用户右键单击任务栏上的对话框表示(Windows 7),则可以单击“关闭此窗口”。奇怪的是,号码-32030被保存在注册表中作为X和Y位置,但宽度和高度被正确保存。任何想法这个数字来自于什么和在这种情况下做什么thxWPF中最小化的窗口位置
答
你想是这样的,当你保存窗口位置:
if (this.WindowState == WindowState.Normal)
{
Properties.Settings.Default.Top = Top;
Properties.Settings.Default.Left = Left;
Properties.Settings.Default.Height = Height;
Properties.Settings.Default.Width = Width;
}
else
{
Properties.Settings.Default.Top = RestoreBounds.Top;
Properties.Settings.Default.Left = RestoreBounds.Left;
Properties.Settings.Default.Height = RestoreBounds.Height;
Properties.Settings.Default.Width = RestoreBounds.Width;
// Check for WindowState.Maximized or WindowState.Minimized if you
// need to do something different for each case (e.g. store if application
// was Maximized
}
最重要的一点是,你需要在最大化或最小化的窗口RestoreBounds
。代码可能会被重构,使其更有效率,但你明白了。
答
我想你正在更新窗口的位置,当窗口关闭?如果是这样,有几个解决方案。
1)将窗口位置保存在不同的事件上,例如当窗口被调整大小或移动时。 2)在保存X和Y位置之前检查窗口是否已最小化。
例子:
switch (this.WindowState)
{
case WindowState.Maximized:
// don't update the X,Y
break;
case WindowState.Minimized:
// don't update the X,Y
break;
case WindowState.Normal:
// DO update the X,Y
break;
}