开发工具与关键技术: 窗体的初始化位置和大小
作者:邓崇富
撰写时间:2019 年 7 月7 日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
设置窗体关闭时记录下当时窗体的大小和位置,在第二次打开窗体时,窗体将会显示在上次窗体关闭时的位置和大小。或者是第一次在一台电脑上运行此窗体时,需要获取本电脑的屏幕的分辨率作为窗体的大小的初始值。下面举一个例子说明详细的步骤和代码。
首先在窗体里面添加一个窗体关闭事件(Closing="Window_Closing")和一个窗体显示位置属性(WindowStartupLocation="CenterOwner"),Icon是窗体图标。
详细代码如下:
<Window x:Class="Client.Window1"
<!--此处省略了引用的命名空间-->"
WindowStartupLocation="CenterOwner"
Icon="/Images/82.png"
Title="火车后台维护系统"
Loaded="Window_Loaded" Closing="Window_Closing">
<Grid>
<!--页面代码-->
</Grid>
</Window>
下面是XAML的后台的1详细代码:
public MainWindow(string strBranch, string strName)
{
InitializeComponent();
//读取配置文件
try
{
//设置位置、大小
Rect restoreBounds = Properties.Settings.Default.MainRestoreBounds;
this.WindowState = WindowState.Normal;
this.Left = restoreBounds.Left;
this.Top = restoreBounds.Top;
this.Width = restoreBounds.Width;
this.Height = restoreBounds.Height;
if (Width > 136 && Height > 39)
{
//设置窗口状态
this.WindowState = Properties.Settings.Default.MainWindowState;
}
else
{
//获取当前电脑的屏幕的分辨率
this.Width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;
this.Height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height -10;
}
}catch { }
}
在窗体的后台的主方法里面设置读取上次关闭窗体时保存下来的配置文件,设置窗体离屏幕坐上角(0.0)坐标的位置(restoreBounds)、显示的状态(WindowState)、离屏幕左边的距离(Left)、离屏幕上边的距离(Top)、窗体的宽(Width)和高(Height),然后再用if…else..语句判断一下当前获取到的窗体的宽高的值是否大于窗体的最小值,如果是就设置窗体为显示状态,否则就进入获取电脑屏幕的分辨。
注意:在获取电脑屏幕分辨率时需要引用两个程序集,否则会报错。详细如下图:
最后就是写关闭窗体时的方法(Window_Closing()),记录关闭窗体时窗体的位置、大小和状态到配置文件里。
详细代码如下:
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
//保存当前位置、大小和状态,到配置文件
Properties.Settings.Default.MainRestoreBounds =
this.RestoreBounds;
Properties.Settings.Default.MainWindowState =
this.WindowState;
Properties.Settings.Default.Save();
}
注意:写好这个方法和方法体后,需要配置一些文件,首先找到项目的Properties文件点开,再找到Settings.settings文件双击打开。先设置第一行的名称:MainRestoreBounds;类型:System.Windows.Rect;范围选择:用户。再设置第二行的名称:MainWindowState;类型:System.Windows.WindowState; 范围选择:用户 否则会报错。还有一个值得注意的地方就是:在选择类型时,点开下拉框后是找不到System.Windows.Rect和System.Windows.WindowState的,拉到最下面点击浏览弹出“选择类型窗口”直接在所选类型里手写上就好。
详细步骤如下图: