C#如何从上次窗体关闭的位置打开窗体

目录

1.操作方法

(1)Location属性

(2)读写注册表

(3)SetValue方法

(4)命名空间

2.示例


        实际开发中,有很多软件都有一个通用的功能,即从上次关闭位置启动窗体,使用C#语言可以通过在注册表中读写窗体的Location属性来实现从上次关闭位置启动窗体的功能。

1.操作方法

        在窗体关闭前处理窗体的FormClosed事件,将窗体的Location属性值写入注册表,然后在窗体的Load事件中从注册表中读取保存的数据,设置窗体的Location属性值,从而实现了从上次关闭位置启动窗体的功能。

(1)Location属性

        该属性用来获取或设置窗体的左上角相对于桌面的左上角坐标。语法格式如下:

[SettingsBindableAttribute(true)]
public Point Location{get;set;}
参数说明
属性值:Point结构,表示窗体的左上角相对于桌面的左上角坐标。

(2)读写注册表

        C#中对注册表进行读写,主要是通过RegistryKey类的GetValue方法和SetValue方法来实现的,其中,GetValue方法用来检索与指定名称关联的值,其最常用的语法格式如下:

public Object GetValue(string name)
参数说明
name:要检索的值的名称。
返回值:与name关联的值;如果未找到name,则为null。

(3)SetValue方法

        SetValue方法用来设置注册表项中的名称/值对的值,其最常用的语法格式如下:

public void SetValue(string name,Object value)
参数说明
name:要存储的值的名称。
value:要存储的数据。

(4)命名空间

        使用RegistryKey类时,首先需要在命名空间区域添加Microsoft.Win32命名空间。

2.示例

// 从上次窗体关闭的位置打开窗体
// Form1.cs
using Microsoft.Win32;namespace _159
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){RegistryKey myReg1, myReg2;     //声明注册表对象myReg1 = Registry.CurrentUser;  //获取当前用户注册表项try{myReg2 = myReg1.CreateSubKey("Software\\MySoft");//在注册表项中创建子项Location = new Point(Convert.ToInt16(myReg2.GetValue("1")), Convert.ToInt16(myReg2.GetValue("2")));//设置窗体的显示位置}catch { }}private void Form1_FormClosed(object sender, FormClosedEventArgs e){RegistryKey myReg1, myReg2;     //声明注册表对象myReg1 = Registry.CurrentUser;  //获取当前用户注册表项myReg2 = myReg1.CreateSubKey("Software\\MySoft");//在注册表项中创建子项try{myReg2.SetValue("1", Location.X.ToString()); //将窗体关闭时x坐标写入注册表myReg2.SetValue("2", Location.Y.ToString()); //将窗体关闭时y坐标写入注册表}catch { }}}
}
// Form1.Designer.cs
namespace _159
{partial class Form1{/// <summary>///  Required designer variable./// </summary>private System.ComponentModel.IContainer components = null;/// <summary>///  Clean up any resources being used./// </summary>/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>protected override void Dispose(bool disposing){if (disposing && (components != null)){components.Dispose();}base.Dispose(disposing);}#region Windows Form Designer generated code/// <summary>///  Required method for Designer support - do not modify///  the contents of this method with the code editor./// </summary>private void InitializeComponent(){SuspendLayout();// // Form1// AutoScaleDimensions = new SizeF(7F, 17F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(324, 191);Name = "Form1";Text = "从上次关闭位置启动窗体";FormClosed += Form1_FormClosed;Load += Form1_Load;ResumeLayout(false);}#endregion}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/763817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 事务基本介绍

目录 命令小结 一 MySQL事务的概念 &#xff08;一&#xff09;事务介绍 &#xff08;二&#xff09;事务特点 &#xff08;三&#xff09;事务的ACID特点 1&#xff0c;原子性 1.1 原子性具体形容 1.2 原子性案例 2 &#xff0c;一致性 2.1一致性具体介绍 2.2…

《数字集成电路物理设计》学习笔记(持续更新中)

参考书籍&#xff1a; 《数字集成电路物理设计》pdf下载百度云链接&#xff1a; 链接: https://pan.baidu.com/s/1jOD54q_f9KLhfX6InabTRA?pwd8888 提取码: 8888 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 --来自百度网盘超级会员v8的分享 目录 第1章 集…

C++ set 、unordered_set 删除

erase() 语法格式 set_name.erase(element);//删除 set 容器中值为 val 的元素name.erase(iterator position);//删除 position 迭代器指向的元素name.erase(iterator start, iterator end);//删除 [start,end) 区间内的所有元素示例 set<int> myset{1,2,3,4,5}; myse…

Vue 常见面试题(一)

目录 1、Vue 的最大的优势是什么&#xff1f;&#xff08;必会&#xff09; 2、Vue 和 jQuery 两者之间的区别是什么&#xff1f;&#xff08;必会&#xff09; 3、MVVM 和 MVC 区别是什么&#xff1f;哪些场景适合&#xff1f;&#xff08;必会&#xff09; 1、基本定义 2…

索尼下一代游戏主机PS5将于11月20日发售

索尼下一代游戏机PS5将于2020年11月20日发布。据悉&#xff0c;这款游戏机的售价可能会达到499美元&#xff08;约合人民币3500元&#xff09;。 我们知道游戏主机的价格低于游戏PC的价格。 既然PS5的主要硬件配置已经公开&#xff0c;那么现在配置一台同样配置的游戏PC需要多少…

WSL2的安装步骤

WSL2&#xff08;Windows Subsystem for Linux 2&#xff09;是微软公司开发的一项创新性技术&#xff0c;它在Windows操作系统上提供了一个完整的Linux内核&#xff0c;并允许用户在Windows环境中运行Linux发行版。之前想在Windows上使用Linux系统必须先安装VirtualBox或VMWar…

实战whisper语音识别第一天,部署服务器,可远程访问,实时语音转文字(全部代码和详细部署步骤)

Whisper是OpenAI于2022年发布的一个开源深度学习模型&#xff0c;专门用于语音识别任务。它能够将音频转换成文字&#xff0c;支持多种语言的识别&#xff0c;包括但不限于英语、中文、西班牙语等。Whisper模型的特点是它在多种不同的音频条件下&#xff08;如不同的背景噪声水…

聊聊功率器件(氮化镓,碳化硅)

氮化镓和碳化硅是两种具有独特性质和广泛应用的无机物。下面将尽可能详细地解释它们的定义、应用、研究热点以及对我们的价值。 1&#xff0c;氮化镓 氮化镓&#xff08;GaN&#xff09;是一种由氮和镓元素组成的化合物&#xff0c;具有直接能隙的半导体特性。其结构类似于纤…

多线程基础 -概念、创建、等待、分离、终止

文章目录 一、 线程概念1. 什么是线程2. 线程的优点3.线程的缺点4. 线程异常5. 线程用途 二、 Linux进程VS线程1. 进程和线程2. 进程和线程的地址空间3. 进程和线程的关系 三、Linux线程控制1. POSIX线程库2. 线程创建3. 线程ID及进程地址空间布局4. 线程终止5. 线程等待6. 线程…

故障诊断 | 一文解决,RBF径向基神经网络的故障诊断(Matlab)

文章目录 效果一览文章概述专栏介绍模型描述源码设计参考资料效果一览 文章概述

专业140+总分410+南京大学851信号与系统考研经验南大电子信息与通信集成,电通,真题,大纲,参考书。

今年分数出来还是有点小激动&#xff0c;专业851信号与系统140&#xff08;感谢Jenny老师辅导和全程悉心指导&#xff0c;答疑&#xff09;&#xff0c;总分410&#xff0c;梦想的南大离自己越来越近&#xff0c;马上即将复试&#xff0c;心中慌的一p&#xff0c;闲暇之余&…

#Linux(权限管理)

&#xff08;一&#xff09;发行版&#xff1a;Ubuntu16.04.7 &#xff08;二&#xff09;记录&#xff1a; &#xff08;1&#xff09; &#xff08;2&#xff09;-开头代表普通文件 划分为三组&#xff1a; rw- rw- r-- rw-: 文件拥有…

蓝桥杯-体育健将-CPP-贪心

目录 一、题目描述&#xff1a; 二、整体思路&#xff1a; 三、代码&#xff1a; 一、题目描述&#xff1a; 二、整体思路&#xff1a; 要在k分钟内拿最多的金牌&#xff0c;就意味着要参加尽可能多的项目&#xff0c;因此就要选择耗时(比赛时间和休息时间)最少的项目先预处…

【隐私计算实训营003详解隐私计算框架及技术要点】

1. 隐语架构一览 1.1 隐语架构 隐语架构通常指的是一种面向隐私保护计算的软件框架或解决方案&#xff0c;它采用了密码学、可信执行环境&#xff08;TEE&#xff09;、多方安全计算&#xff08;MPC&#xff09;等多种隐私保护技术来实现在数据加密状态下进行计算&#xff0c;…

API调试管理工具Postman下载及操作介绍

1.下载安装postman地址&#xff1a;https://www.getpostman.com/downloads/ 2.创建项目 3.创建请求API 然后点击save保存api 4.用一个变量保存主域名&#xff0c;方便后续操作 就类似下面的baseurl 5.创建新环境 6.添加变量&#xff08;如添加本地测试环境url——ba…

[综述笔记]A Survey on Deep Learning for Neuroimaging-Based Brain Disorder Analysis

论文网址&#xff1a;Frontiers | A Survey on Deep Learning for Neuroimaging-Based Brain Disorder Analysis (frontiersin.org) 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论…

随笔】Git -- 常用命令(四)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

JavaScript高级(十四)----prmise

异步请求的处理方式 回调函数 所谓的回调函数就是函数作为参数的传递&#xff0c;在一个函数内部调用另一个函数&#xff0c;调用的同时可以把内部函数的数据传递出来&#xff0c;他的使用场景就是异步操作&#xff0c;数据需要等待一段时间才能返回的情况下可以使用回调函数…

CrossOver 23 用户可以免费升级到 CrossOver24吗?CrossOver用户如何升级呢?

也就是上个月&#xff08;2024年2月底&#xff09;左右&#xff0c;CrossOver 刚刚更新了 24 版本&#xff0c;CrossOver更新的内容有哪些&#xff0c;大家可以参考这篇文章&#xff1a;CrossOver24.0新功能介绍&#xff0c;这篇文章详细介绍了CrossOver24有哪些新特点&#xf…

Echarts中手柄样式更改

代码&#xff1a; dataZoom: [{start: 0,end: 100,left: 100,bottom: 0,right: 140,backgroundColor: yellow,borderRadius: 15,borderColor: green,dataBackground: {lineStyle: {width: 0},areaStyle: {color: black,opacity: 1,}},selectedDataBackground: {lineStyle: {wi…