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();
        }
    }
}
相关推荐
freshman_y15 分钟前
经典的C语言题型
c语言·开发语言·算法
small_wh1te_coder15 分钟前
拷打字节技术总监: 详解c语言嵌入式多线程编程中的头文件 #总结 上下篇合 #
c语言·开发语言·算法·操作系统·嵌入式
凌盛羽16 分钟前
使用python绘图分析电池充电曲线
开发语言·python·stm32·单片机·fpga开发·51单片机
wenroudelang888817 分钟前
Visual Studio的C#实例--2个窗体之间跳转
ide·c#·visual studio
wangjialelele18 分钟前
现代C++:C++17新特性整理
c语言·开发语言·c++·visual studio code
肖恭伟30 分钟前
Curso调试Qt:GDB + Qt 官方 qt5printers.py + .gdbinit
开发语言·qt
思茂信息30 分钟前
CST软件加载 Pin 二极管的可重构电桥仿真研究
服务器·开发语言·人工智能·php·cst·电磁仿真·电磁辐射
荔枝吻31 分钟前
【AI总结】C#与.NET:一段跨越20年的命名纠葛与共生传奇
开发语言·c#·.net
xieliyu.31 分钟前
Java、多态
java·开发语言
天天学IT35 分钟前
第二章 Qt 模块
开发语言·qt·qt教程·qt6教程