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();
        }
    }
}
相关推荐
MegaDataFlowers几秒前
静态/动态代理模式
java·开发语言·代理模式
傻啦嘿哟3 分钟前
使用 Python 实现 Word 文档文本格式化全解析
开发语言·python·word
2501_945424804 分钟前
调试技巧与核心转储分析
开发语言·c++·算法
m0_579393664 分钟前
单元测试在C++项目中的实践
开发语言·c++·算法
C_Si沉思7 分钟前
C++中的状态模式高级应用
开发语言·c++·算法
左左右右左右摇晃14 分钟前
Java并发——Lock锁
java·开发语言·笔记
聆风吟º18 分钟前
【C标准库】深入理解C语言memcpy函数:用法、原理与避坑指南
c语言·开发语言·memcpy·库函数
书到用时方恨少!18 分钟前
基于 Three.js 的 3D 地球可视化项目
开发语言·javascript·3d
似水明俊德19 分钟前
16-C#.Net-自研ORM框架-学习笔记
windows·笔记·学习·c#·.net
泯仲21 分钟前
RAG系统核心之意图识别与意图树实现全解析
开发语言·大模型·agent·rag