WindowsForm窗体位置

时间:2022-04-11 04:35:16

WindowsForm的窗体,是winForm程序的基本单元。窗体的大小和位置是如何控制的呢?

先看窗体的几个属性。如下图所示

一、 设置窗体起始位置居中

窗口默认是在左上角的,可以用微软定义好的FormStartPosition属性来配置为居中:

this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;

等同于

这个属性的其他值也可以了解下:

属性值

 

说明

 

CenterParent

 

在其父窗体中居中

 

Manual

 

位置由Location属性决定

 

WindowsDefaultBounds

 

默认位置,边界也默认

 

WindowsDefaultLocation

 

默认位置,尺寸在窗体大小中指定

 

其中提到了Location属性,下面详谈。

二、 指定窗体位置和大小。

窗体有Left,Right,Top,Bottom属性,似乎很完美,应该定义这四项,就能明确指定窗体的大小和位置了吧?然而并非如此。RightBottom是只读的属性,可以用它们来获取窗体边距,却不能用来指定边距。

确定窗体位置,只需要窗体左上角这一个点的位置。Left,Top 就是这个点与屏幕左、上边距的距离,换句话说,窗体的Location属性,实际上就是(Left,Top)。 下面的语句是等价的:

this.Location=new Point(100,100);

this.Left = 100; this.Top = 100;

而确定窗体的大小,用Width 宽度和Height高度,就够了。指定当前窗体的大小很简单:

this.Width = 600;

this.Height =480;

窗体是有最小值和最大值的,可以通过设置MaximumSizeMinimumSize来指定。如果没有指定,最大不能超过屏幕分辨率,最小不是(0,0),而是系统自己计算出的能让这几个图标显示出来的大小:  

有时候涉及到对于窗体大小的动态调整,就应该注意判断,不要越界。那么如果想设置窗体能根据不同屏幕的大小自动调整呢?

三、 根据分辨率调整窗体大小

首先要获取屏幕大小:

int width = Screen.PrimaryScreen.WorkingArea.Width;

int height = Screen.PrimaryScreen.WorkingArea.Width;

Screen.PrimaryScrenn为获取显示器,如果有多显示器也可以用Screen.AllScreens[0],Screen.AllScreens[1]...WorkingArea为桌面工作区域,不包括任务栏等。

然后设置宽度和高度:

this.Width = (int)(width / 2);

this.Height = (int)(height / 2);

四、窗体最大化、最小化和全屏

通过设置WindowsState属性为MaximizedManimized来实现窗体的最大化和最小化。如果需要全屏显示,可将窗体大小设置为屏幕大小(见三)。但此时可能需要隐藏上方的图标、标题、最大最小化和关闭按钮。方法为设置FormBorderStyleNone

五、窗体置于顶层

设置TopMost属性为True即可。

由上述内容可见,基本上都是通过设置窗体的属性来实现,在学习过程中,对各种属性应该有一个基本的了解。.net将很多工作都隐藏在幕后,所以在属性窗口的设置,其实也可以通过代码来实现。如果有不清楚的地方,可以打开对应的Designer.cs文件来查看,,更是大大方便了学习。可以看这一段:

//

// Form1

//

this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

this.Controls.Add(this.btnOpenNewForm);

this.Controls.Add(this.btnChangePos);

this.Controls.Add(this.txttop);

this.Controls.Add(this.txtWidth);

this.Controls.Add(this.txtHeight);

this.Controls.Add(this.txtLeft);

this.Controls.Add(this.label4);

this.Controls.Add(this.label3);

this.Controls.Add(this.label2);

this.Controls.Add(this.label1);

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;

this.Name = "Form1";

//起始居中

this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;

//窗体位置和大小

this.Location = new System.Drawing.Point(100, 100);

this.ClientSize = new System.Drawing.Size(454, 400);

this.Text = "Form1";

//窗体置顶

this.TopMost = true;

//窗体最大化

this.WindowState = System.Windows.Forms.FormWindowState.Maximized;

this.Load += new System.EventHandler(this.Form1_Load);

this.ResumeLayout(false);

this.PerformLayout();

WindowsForm窗体位置