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();
        }
    }
}
相关推荐
workflower21 小时前
单元测试-例子
java·开发语言·算法·django·个人开发·结对编程
YuanlongWang21 小时前
C# 基础——装箱和拆箱
java·开发语言·c#
b78gb21 小时前
电商秒杀系统设计 Java+MySQL实现高并发库存管理与订单处理
java·开发语言·mysql
LXS_3571 天前
Day 05 C++ 入门 之 指针
开发语言·c++·笔记·学习方法·改行学it
etsuyou1 天前
js前端this指向规则
开发语言·前端·javascript
shizhenshide1 天前
为什么有时候 reCAPTCHA 通过率偏低,常见原因有哪些
开发语言·php·验证码·captcha·recaptcha·ezcaptcha
mit6.8241 天前
[Agent可视化] 配置系统 | 实现AI模型切换 | 热重载机制 | fsnotify库(go)
开发语言·人工智能·golang
友友马1 天前
『 QT 』QT控件属性全解析 (一)
开发语言·前端·qt
小白学大数据1 天前
实战:Python爬虫如何模拟登录与维持会话状态
开发语言·爬虫·python
一念&1 天前
每日一个C语言知识:C 结构体
c语言·开发语言