1、C#_窗体加载大小及位置C#_窗体加载大小及位置1 窗体在固定位置加载1.1 获取屏幕大小1.2 改变窗体的大小1.3 修改窗体加载位置1.4 完整代码演示2 窗体大小位置由上次关闭时决定2.1 保存窗体关闭时的大小和位置2.2 在窗体加载时写入记录的大小和位置2.3 完整代码演示代码下载链接:本文介绍两种设置窗体加载大小及位置的方法:一种是每次打开窗体,窗体在固定位置、按照固定的大小显示;另一种是在窗体关闭时记录下窗体的位置和大小,在下次打开时按照记录的位置和大小加载。1 窗体在固定位置加载窗体每次根据我们指定的位置和大小加载,因此需要知道当前的屏幕的大小,根据屏幕的大小设置窗体的相对大小和
2、加载位置。1.1 获取屏幕大小获取屏幕大小有两种指令,GetWorkingArea指令表示获取不包含任务栏屏幕的大小,GetBounds指令表示获取包含任务栏屏幕的大小。这两种指令的代码如下:/通过GetWorkingArea指令获取不包含任务栏屏幕的区域Rectangle ScreenArea1 = System.Windows.Forms.Screen.GetWorkingArea(this);/获取屏幕宽度int width1 = ScreenArea1.Width;/获取屏幕高度int height1 = ScreenArea1.Height;/通过GetBounds指令获取包含任务栏
3、屏幕的区域Rectangle ScreenArea2 = System.Windows.Forms.Screen.GetBounds(this);/获取屏幕宽度int width2 = ScreenArea2.Width;/获取屏幕高度int height2 = ScreenArea2.Height;1.2 改变窗体的大小根据屏幕大小修改适合的窗体的大小。如下代码是将窗体的大小设为屏幕的3/4:/修改窗体的宽度和高度this.Width = width1 * 3 / 4;/width1代表屏幕的宽度this.Height = height1 * 3 / 4;/height1代表屏幕的高度1.3
4、 修改窗体加载位置根据屏幕的大小和窗体的大小计算窗体的左上角的位置。屏幕左上角的坐标为(0,0),如下代码将窗体坐标设为居中:/修改窗体加载位置,左上角代表(0,0)点,将窗体位置设为居中/width1和height1是屏幕的宽度和高度,Width和Height是窗体的宽度和高度this.Left = (width1 - this.Width) / 2;/窗体左边的位置this.Top = (height1 - this.Height) / 2;/窗体顶部的位置1.4 完整代码演示窗体的坐标和位置设置在窗体的加载事件中完成,代码如下:private void Form1_Load(object
5、 sender, EventArgs e)/通过GetWorkingArea指令获取不包含任务栏屏幕的区域Rectangle ScreenArea1 = System.Windows.Forms.Screen.GetWorkingArea(this);/获取屏幕宽度int width1 = ScreenArea1.Width;/获取屏幕高度int height1 = ScreenArea1.Height;/*/通过GetBounds指令获取包含任务栏屏幕的区域Rectangle ScreenArea2 = System.Windows.Forms.Screen.GetBounds(this);
6、/获取屏幕宽度int width2 = ScreenArea2.Width;/获取屏幕高度int height2 = ScreenArea2.Height;*/修改窗体的宽度和高度this.Width = width1 * 3 / 4;this.Height = height1 * 3 / 4;/修改窗体加载位置,左上角代表(0,0)点this.Left = width1 / 2 - this.Width / 2;this.Top = height1 / 2 - this.Height / 2;2 窗体大小位置由上次关闭时决定在用户打开窗体时,窗体自动根据上次关闭时的大小和位置进行加载。这里我
7、们需要在每次窗体关闭时记录大小和位置参数。2.1 保存窗体关闭时的大小和位置在窗体关闭时,将当前窗体的大小和位置保存在注册表中。可以用Location指令描述窗口当前位置位置,Location表示空间左上角相对于容器的坐标,在这里表示窗口相对于屏幕的坐标。在FormClosed事件中,将窗口大小和位置记录在注册表中,注册表的写入需要using Microsoft.Win32,代码如下:private void Form1_FormClosed(object sender, FormClosedEventArgs e)/Window注册表基项HKEY_CURRENT_USERRegistryKe
8、y reg1 = Registry.CurrentUser;/创建一个新子项或者打开一个现有子项进行写访问RegistryKey reg2 = reg1.CreateSubKey(SoftWareMySoft);/设定指定名称/值对,其中Location表示空间左上角相对于容器的坐标reg2.SetValue(Location.X, this.Location.X);/写入窗体左上角横坐标reg2.SetValue(Location.Y, this.Location.Y);/写入窗体左上角纵坐标reg2.SetValue(Width, this.Width);/写入窗体当前宽度reg2.Set
9、Value(Height, this.Height);/写入窗体当前高度2.2 在窗体加载时写入记录的大小和位置在窗体加载事件中,直接提取注册表中保存的大小和位置,作为窗体加载的大小和位置。private void Form1_Load(object sender, EventArgs e)/提取注册表中的参数RegistryKey reg = Registry.CurrentUser.CreateSubKey(SoftWareMySoft);int x = Convert.ToInt32(reg.GetValue(Location.X);/提取窗口横坐标xint y = Convert.To
10、Int32(reg.GetValue(Location.Y);/提取窗口纵坐标yint width1 = Convert.ToInt32(reg.GetValue(Width);/提取窗口宽度width1int height1 = Convert.ToInt32(reg.GetValue(Height);/提取窗口高度height1/将从注册表中提取的参数作为窗体加载的参数this.Width = width1;/修改窗口宽度大小this.Height = height1;/修改窗口高度大小this.Location = new Point(x, y);/修改窗口的位置2.3 完整代码演示pr
11、ivate void Form1_FormClosed(object sender, FormClosedEventArgs e)/Window注册表基项HKEY_CURRENT_USERRegistryKey reg1 = Registry.CurrentUser;/创建一个新子项或者打开一个现有子项进行写访问RegistryKey reg2 = reg1.CreateSubKey(SoftWareMySoft);/设定指定名称/值对,其中Location表示空间左上角相对于容器的坐标reg2.SetValue(Location.X, this.Location.X);/写入窗体左上角横坐标
12、reg2.SetValue(Location.Y, this.Location.Y);/写入窗体左上角纵坐标reg2.SetValue(Width, this.Width);/写入窗体当前宽度reg2.SetValue(Height, this.Height);/写入窗体当前高度private void Form1_Load(object sender, EventArgs e)/提取注册表中的参数RegistryKey reg = Registry.CurrentUser.CreateSubKey(SoftWareMySoft);int x = Convert.ToInt32(reg.Get
13、Value(Location.X);/提取窗口横坐标xint y = Convert.ToInt32(reg.GetValue(Location.Y);/提取窗口纵坐标yint width1 = Convert.ToInt32(reg.GetValue(Width);/提取窗口宽度width1int height1 = Convert.ToInt32(reg.GetValue(Height);/提取窗口高度height1/将从注册表中提取的参数作为窗体加载的参数this.Width = width1;/修改窗口宽度大小this.Height = height1;/修改窗口高度大小this.Location = new Point(x, y);/修改窗口的位置代码下载链接:1,CSDN下载2,百度网盘下载链接:提取码:k6zx
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。