Visual C#是微軟公司.Ner FrameWork框架中的一個(gè)重要組成部分,也是微軟公司極力推薦的新一代程序開發(fā)語言。WinForm是.Net開發(fā)平臺中對Windows Form的一種稱謂。.Net 為開發(fā)WinForm的應(yīng)用程序提供了豐富的Class Library(類庫)。這些WinFrom 類庫支持RAD(快速應(yīng)用程序開發(fā)),這些類庫被封裝在一個(gè)名稱空間之中,這個(gè)名稱空間就是System.Windows.Forms。在此名稱空間中定義了許多類,在開發(fā)基于.Net的GUI應(yīng)用程序的時(shí)候,就是通過繼承和擴(kuò)展這些類才使得我們的程序有著多樣的用戶界面。本文就試圖通過一個(gè)最基本的類--Form,來具體說明一下用Visual C#開發(fā)WinForm程序的具體過程。
一.程序開發(fā)和運(yùn)行環(huán)境及概括介紹 本問的所有調(diào)試程序都基于微軟視窗2000專業(yè)版本和.Net FrameWork Beta 2版。
二.第一個(gè)WinForm 如果你的機(jī)器已經(jīng)達(dá)到了我們程序要求的運(yùn)行環(huán)境,那就打開一個(gè)文本編輯器把下面的 程序代碼拷貝到編輯器里面,然后另存為first.cs文件。通過下面的編譯語句: csc /t:winexe /r:system.dll first.cs 編譯完成后。運(yùn)行程序就可以看到以下界面:
程序源代碼:first.cs using System ; //導(dǎo)入 WinForms 名稱空間 using System.Windows.Forms ; //Class Form1 繼承并擴(kuò)展 System.Windows.Forms名稱空間中class Form public class Form1 : Form { public static void Main() { //運(yùn)行程序 Application.Run(new Form1()); } }
小結(jié): 1).首選要使用"using System.Windows.Forms"語句導(dǎo)入WinForm的名稱空間 2).聲明Form1 類,此類是繼承、擴(kuò)展了using System.Windows.Forms 名稱空間中的Form 類 3)."Application"類,此類也被定義在using System.Windows.Forms名稱空間中,由于此類封閉的,所有我們不能繼承。"Application"類主要作用是運(yùn)行和退出Windows的應(yīng)用程序,還可以處理Windows的消息。調(diào)用"Application"類的"Run"方法表明將要開始運(yùn)行應(yīng)用程序。
三.做一個(gè)透明的WinForm 當(dāng)我第一次在視窗2000中看到透明的窗體,就想做出這樣一個(gè)窗體應(yīng)該是非常難的。肯定要調(diào)用很多的API函數(shù)。當(dāng)接觸了.Net以后,才發(fā)現(xiàn)用VisualC#做出一個(gè)透明的窗體是多么簡單,只要設(shè)定一個(gè)值就可以了。下面還是讓我們來看看通過以下代碼生成的透明窗體到底是什么樣。
透明窗體的源代碼:second.cs using System ; using System.Windows.Forms ; using System.Drawing ; public class Form2 : Form { public static void Main( ) { Application.Run( new Form2( ) ); } public Form2( ) { this.Location = new System.Drawing.Point( 100 , 100 ) ; this.Cursor = System.Windows.Forms.Cursors.Hand; // 定義在窗體上,光標(biāo)顯示為手形 this.Text = "透明的WinForm窗體!"; // 定義窗體的標(biāo)題名稱 this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; // 定義窗體的開始顯示位置是屏幕的中間 this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; // 窗體的邊界是Fixed3D類型 this.ForeColor = System.Drawing.SystemColors.Desktop; //以桌面的前景色作為窗體的前景色 this.Font = new System.Drawing.Font ( "宋體", 9 ) ; // 定義字體類型,大小 this.BackColor = System.Drawing.Color.Blue; // 定義背景色為藍(lán)色 this.ClientSize = new System.Drawing.Size( 440 , 170 ) ; // 設(shè)置窗體的大小 // Opacity屬性設(shè)立窗體的透明程度,只對于視窗2000有效 this.Opacity = 0.60 ; } }
小結(jié): 以上的代碼其實(shí)和第一個(gè)例子的代碼有很多相似,只是在Form2 Class中多定義了一些屬性。 1)."this"關(guān)鍵字,我想大家都注意到了這個(gè)關(guān)鍵字,那么到底該如何理解他。舉例如下:當(dāng)我在自我介紹的時(shí)候(其實(shí)就是在定義我的屬性),我會說"我的名字叫xx","我的年齡是xx","我的郵箱是xx"……你可能注意到"我的"這二個(gè)字,他就是指我本人--王天。同樣的道理在程序設(shè)計(jì)中,"this"關(guān)鍵字就是指向一個(gè)對象的實(shí)例。所有在上面代碼中"this.Font"、"this.Text"就是在設(shè)定當(dāng)前或者正在運(yùn)行的Form2實(shí)例的屬性。 2).再看看上面的代碼,在程序中又導(dǎo)入了一名稱空間--System.Drawing。通過這個(gè)名稱空間定義的類,就可以更好的設(shè)計(jì)對象,處理顏色和大小。 3).下面通過下表來具體說明一下在上面程序中設(shè)立的屬性的具體含義。 屬性 描述 Location 初始化WinForm的位置,就是當(dāng)應(yīng)用程序運(yùn)行的時(shí)候,顯示W(wǎng)inFrom的固定位置 Cursor 當(dāng)光標(biāo)在WinForm上面的時(shí)候顯示的光標(biāo)狀態(tài) Text 設(shè)定WinForm的標(biāo)題 StartPosition 這個(gè)屬性有點(diǎn)類似于"Location"屬性,"Location"屬性定義的是WinForm的絕對位置,而本屬性定義的是WinForm的相對屬性。本屬性的值定義為"CenterScreen"、"Manual"、"WindoowsDefaultLocation"、"WindowsDefaultBounds"、"CenterParent" FormBorderStyle 定義窗體的邊界的樣式。通常設(shè)定為,"FixedSingle"、"Sizable"、"FixedDialog"、"FixedToolWindow"、"SizableToolWindow" ForeColor 定義窗體的前景色彩 Font 定義放在WinForm上的字體的類型和大小 BackColor 定義窗體的背景色彩 ClientSize 定義WinForm的大小 Opacity 這個(gè)屬性是定義WinForm的透明程度,并且這個(gè)屬性只能用在視窗2000。屬性的區(qū)值0-1,代表從完全透明到不透明。
四.做一個(gè)帶一個(gè)組件的WinForm 本例子主要是介紹如何在WinForm中加入一個(gè)組件。如果你想在窗體中加入任何組件,首先,你必須要初始化這個(gè)組件(見下面程序中初始化Label一樣)。并且使用"Controls.Add"方法加入到窗體中,以下是程序運(yùn)行的界面和源代碼。
源程序:three.cs using System ; using System.Windows.Forms ; using System.Drawing ; public class Form3 : Form { //定義一個(gè)標(biāo)簽 private Label label1 ; public static void Main( ) { Application.Run( new Form3( ) ) ; } // 構(gòu)造 public Form3( ) { // 建立標(biāo)簽并且初始化 this.label1 = new System.Windows.Forms.Label( ) ; //先繼承一個(gè)Label 類 label1.Location = new System.Drawing.Point( 24 , 16 ) ; //設(shè)定 Label的顯示位置 label1.Text = "這是一個(gè)WinForm中的標(biāo)簽"; label1.Size = new System.Drawing.Size ( 200, 50 ); //設(shè)定標(biāo)簽的大小 label1.TabIndex = 0 ; label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // 設(shè)定標(biāo)簽的對齊方式 this.Text = "在WinForm中加入一個(gè)標(biāo)簽!"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.AutoScaleBaseSize = new System.Drawing.Size( 8 , 16 ) ; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; // 設(shè)定窗體的邊界類型 this.ForeColor = System.Drawing.SystemColors.Desktop; this.Font = new System.Drawing.Font ("宋體", 10 , System.Drawing.FontStyle.Bold ) ; // 設(shè)定字體、大小就字體的式樣 this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; this.BackColor = System.Drawing.Color.Blue; // 設(shè)定背景色 this.ClientSize = new System.Drawing.Size( 250 , 250 ) ; //把標(biāo)簽加到窗體中 this.Controls.Add ( this.label1 ) ; } }
五.總結(jié) 以上是對用Visual C#開發(fā)WinForm應(yīng)用程序進(jìn)行了著重的介紹,由于在.Net FrameWork Sdk中的System.Windows.Froms名稱空間中封裝了許多關(guān)于界面設(shè)計(jì)的Class(類)。本文只能通過介紹一個(gè)基本的類--Form來了解一下Visual C#的強(qiáng)大功能和.Net Class Library(類庫)豐富的開發(fā)資源。通過本文也可以看出,要想充分利用Visual C#的強(qiáng)大功能,就必須了解并掌握.Net Class Library。也只有掌握了.Net Class Library,你所開發(fā)的.Net程序功能才會強(qiáng)大,生命力才更強(qiáng)。
|