C#记忆窗口大小和位置的案例

cs 复制代码
using System;
using System.Drawing;
using System.Windows.Forms;
using Newtonsoft.Json;

namespace StudyWinform
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Load += new EventHandler(MyFormLoad);
            FormClosing += new FormClosingEventHandler(MyFormClosing);
        }

        private void MyFormLoad(object sender, EventArgs e)
        {
            // 1. 是否最大化
            if (Properties.Settings.Default.Maximized)
            {
                WindowState = FormWindowState.Maximized;
                return;
            }
            // 2. 尝试从设置中恢复窗口大小和位置
            string windowSize = Properties.Settings.Default.WindowSize;
            string windowPosition = Properties.Settings.Default.WindowPosition;
            if (!windowSize.Contains(","))
            {
                windowSize = "\"800, 450\"";
            }
            Size = JsonConvert.DeserializeObject<Size>(windowSize);
            if (!windowPosition.Contains(","))
            {
                StartPosition = FormStartPosition.WindowsDefaultBounds;
                return;
            }
            StartPosition = FormStartPosition.Manual;
            Location = JsonConvert.DeserializeObject<Point>(windowPosition);
        }

        private void MyFormClosing(object sender, FormClosingEventArgs e)
        {
            // 保存窗口大小和位置到设置中
            Properties.Settings.Default.Maximized = WindowState == FormWindowState.Maximized;
            Properties.Settings.Default.WindowSize = JsonConvert.SerializeObject(Size);
            Properties.Settings.Default.WindowPosition = JsonConvert.SerializeObject(Location);
            Properties.Settings.Default.Save();
        }
    }
}
相关推荐
江畔柳前堤3 小时前
roLabelImg 详细安装教程
开发语言·人工智能·后端·云原生
Wang's Blog4 小时前
Go-Zero 项目开发47:自研微服务框架的必要性与核心结构设计
开发语言·微服务·golang
白鸽(二般)4 小时前
MinIO Java Client API
java·开发语言
hPw0eKIqD4 小时前
C++ 模板参数推导问题小记(非推导上下文)
开发语言·c++
临床数据科学和人工智能兴趣组5 小时前
要使用 R Markdown,首先需要安装 R 和 RStudio,接着安装 rmarkdown 包
开发语言·数据挖掘·数据分析·r语言·r语言-4.2.1
Nebula嵌入式5 小时前
【C语言】09-深入解析main函数
linux·c语言·开发语言·嵌入式
神罚天下ET7 小时前
c# ACME client (补充)
开发语言·c#
小灰灰搞电子7 小时前
Qt 实现魔法导航菜单源码分享
开发语言·qt
持敬chijing7 小时前
Python概述
开发语言·python
lpfasd12310 小时前
编程语言榜单变迁分析
开发语言·后端·scala