国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

WindowsForm窗體位置

2019-11-08 01:52:10
字體:
來源:轉載
供稿:網友

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

 

先看窗體的幾個屬性。如下圖所示

 

一、 設置窗體起始位置居中

窗口默認是在左上角的,可以用微軟定義好的FormStartPosition屬性來配置為居中:

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

等同于 

這個屬性的其他值也可以了解下:

屬性值

說明

CenterParent

在其父窗體中居中

Manual

位置由Location屬性決定

WindowsDefaultBounds

默認位置,邊界也默認

WindowsDefaultLocation

默認位置,尺寸在窗體大小中指定

 

其中提到了Location屬性,下面詳談。

 

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

窗體有Left,Right,Top,Bottom屬性,似乎很完美,應該定義這四項,就能明確指定窗體的大小和位置了吧?然而并非如此。Right和Bottom是只讀的屬性,可以用它們來獲取窗體邊距,卻不能用來指定邊距。

確定窗體位置,只需要窗體左上角這一個點的位置。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;

窗體是有最小值和最大值的,可以通過設置MaximumSize和MinimumSize來指定。如果沒有指定,最大不能超過屏幕分辨率,最小不是(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屬性為Maximized和Manimized來實現窗體的最大化和最小化。如果需要全屏顯示,可將窗體大小設置為屏幕大小(見三)。但此時可能需要隱藏上方的圖標、標題、最大最小化和關閉按鈕。方法為設置FormBorderStyle為None。

 

五、窗體置于頂層

設置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();


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 介休市| 大同县| 金溪县| 吉林省| 磐安县| 龙门县| 武城县| 凯里市| 阳谷县| 延边| 铜陵市| 甘洛县| 蒲城县| 涡阳县| 静乐县| 平安县| 凤冈县| 汝南县| 平泉县| 吉木萨尔县| 慈利县| 双牌县| 沾化县| 新安县| 吴堡县| 台安县| 永德县| 花垣县| 泽库县| 赫章县| 龙游县| 海门市| 卫辉市| 托克逊县| 新巴尔虎右旗| 桂东县| 茂名市| 资中县| 比如县| 阳山县| 沙坪坝区|