WPF窗体的初始化位置和大小

本文介绍了一种在应用程序中保存并恢复窗体位置和大小的方法,通过读取配置文件设置窗体的初始位置和大小,确保窗体在下次启动时能保持用户上次使用的位置和尺寸。同时,提供了在首次运行时根据屏幕分辨率自动调整窗体大小的方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发工具与关键技术: 窗体的初始化位置和大小

作者:邓崇富

撰写时间: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的,拉到最下面点击浏览弹出“选择类型窗口”直接在所选类型里手写上就好。

详细步骤如下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值