.Net平台Windows Forms程式設計簡介 -2
最後更新:2017-02-28
來源:互聯網
上載者:User
屬性
我們知道,在物件導向的程式設計中,一個類有很多成員,這些成員包括域(Fields)、建構函式、解構函式、方法(Methods)、事件及屬性(Properties)等。這些成員有的表示對象的一個特徵,也有的使用對象執行一個操作。
.Net類中屬性(Properties)非常重要,其主要用於表示對象的特徵,如一個表單的大小、位置、是否可以最大化、是否顯示控制欄及表單的背景色彩等等。屬性(Properties)對程式員是公開的,你可通過簡單的“=”(賦值號)就可訪問屬性。在.Net類中,有的屬性只能讀、有的只能寫,當然大多數屬性是可以讀寫的,這主要取決於類中對屬性的定義。如下面的代碼在Form(表單)類中定義了一個控制欄是否顯示的屬性:
public bool ControlBox {get; set;} [C#]
Public Property ControlBox As Boolean[Visual Basic]
有了上面的定義,要使一個表單不顯示控制欄,用C#只需要使用下面的簡單語句即可:
form1.ControlBox=false;
在Windows Forms程式設計中,我們都是通過設定大量的屬性值,形成一個非常漂亮的表單的。另外,有了屬性,也增加了語言對RAD(快速開發)的很好支援。
控制項:
Windows Forms程式設計中,僅僅有表單往往是不夠的,還必須有通過眾多的控制項來充實表單的內容,達到友好、人性化的人機操作介面設計。這此,.Net類庫為我們準備了幾乎Windows Forms中會要用到的各種元素類,一般情況下,我們把這些類或其執行個體稱為控制項,表單就是通過各種各樣的控制項充實起來的。
其實,控制項這一概念是在RAD(快速開發)工具中運用起來的,這些開發工具把很多常用的類及相關內容非常形象化的放在工具列或面板中,你只需要通過簡單的滑鼠拖放等操作就可以為程式添加各種各樣的控制項並設定控制項的各種屬性,由開發工具自動產生相應的代碼。通過使用控制項,使你的整個開發變得更加簡單了。
在.Net類庫中,基本上所有的控制項都是由System.Windows.Forms.Control類繼承而來的,該類主要提供非常基本的、讓類能實現形象化顯示、處理各種鍵盤及滑鼠的輸入並響應各種事件等。
由於大多數控制項都是從Control類中繼承,而該類中有一個屬性即Controls表示當前控制項的所有子控制項集合。因此,自己寫代碼把一個控制項添加到表單中非常簡單,只需要把所要添加的控制項對象加入當前表單的Controls屬性集合中即可,如下面的C#代碼:
form1.Controls.Add(new Button());
將在表單form1上添加一個按鈕控制項。
另外,你還可以定義自己的控制項,主要通過System.Windows.Forms.UserControl類(該類是Control的衍生類別),當然使用Control類一樣可以。
3 Windows Forms程式設計簡單步驟
通過前面的介紹,大家可能已經大概知道一個Windows Forms的設計過程了。一般情況下,設計開發一個Windows Forms程式的步驟如下:
第一步:程式需求分析
作為一個成熟的程式員,都會對程式的需求作比較細緻詳細的分析,並不斷的與相關人員交流溝通,最終得到一個比較可行的解決方案。需求分析在程式設計中是必不可少的,在此就不過多講述。
第二步:設計你的類及對象
物件導向程式設計中最為關鍵的部份就是對程式處理問題的對象化。因此,在書寫程式碼前必須花更多的時間在程式所解決問題的對象化及類設計上。並解決問題的各種事務邏輯及流程。
一般情況下,物件導向的設計分為兩個階段,即高層設計和低層設計。
高層設計階段開發系統的結構,構造待開發軟體的總體模型。在這個階段,標識出在具體的電腦環境中進行問題求解所需要的概念,增加了一批需要的類,這些類包括那些使得軟體系統能夠與外部世界進行互動的類。並輸出適合應用軟體要求的類、類之間的關係及應用子系統的視圖規格說明。
低層設計集中於類的詳細設計階段。類設計的目標是形成單一概念的模型,一個獨立的類表示一個概念,以及設計的組件應該是可複用的和可靠的。
類的設計過程中需要採用資訊隱蔽、高內聚低耦合等設計原則。在物件導向的技術中,利用即存類的複用是一個很大的優點。
在Windows Forms的類設計過程中,一定要充分運用各種.Net已存在類的複用,並在其基礎上增加自己類所需的組件及功能等。
第三步:介面設計(設計表單及控制項)
由於Windows Forms程式主要講究人機介面的美觀性及友好性。因此,除了書寫效率非常高的代碼及演算法實現程式功能外,Windows Forms中還將把介面的設計作為一個重點。
介面設計主要是通過設定控制項及表單的各種位置、大小、形狀、色彩等外觀屬性而實現。當然,要想實現非常友好的使用者介面,完全通過在記事本等軟體進行代碼的錄入及憑感覺調整表單及各種控制項的大小、位置及外觀等是很難完成的(僅管你通過記事本也能寫比較大的程式),我們必須藉助各種各樣的開發工具,特別的快速開發(RAD)工具的使用。
當前,有很多可以編寫.Net程式的RAD工具軟體,其中最為完善,功能最為強大,非微軟的Visual Studio .Net莫屬。該軟體是一個集多種語言為一體的快速開發(RAD)工具,提供強大的軟體工程管理、電腦資源管理、智能代碼感知技術及強大的程式試調等功能。使用Visual Studio .Net開發你的各種.Net應用程式,一切都將會變得事半功倍,而且你會發覺編程變得是那麼輕鬆的事兒。
通過使用Visual Studio .Net,你設計表單及程式介面變得很簡單了。你只需要單的滑鼠拖放、位置調整等操作就可以完成程式的大多數設計。Visual Studio .Net其自動產生的程式碼模板及正常化的注釋,還可以通過非常簡單的雙擊控制項為其添加各種事件響應函數等。另外使用Visual Studio .Net,還能很好支援.Net的多語言交叉繼承等功能。
第四步:為表單及控制項添加各類事件回應程式法
在表單及介面設計完成後,餘下的事就是給程式添加具體的原始碼了。由於,WindowsForms基本上是通過由引發事件到響應事件再到執行事件這樣一個過程來達到與使用者的互動的,因此,我們所寫的原始碼大多數都是控制項或表單的各種事件回應程式法,同加上一些公用的函數等,有效組合到一起就可以使你的程式按你的要求辦事了。
如果你使用Visual Studio .Net,那麼,添加事件將是非常簡單的,大多數時候你只需要雙擊控制項就可以為控制項添加常用的回應程式法。其它的事件回應程式法也可以通過其智能代碼感知技術的協助下很快地加入到程式中。
第五步:啟動程式
一切就緒過後,現在可以寫啟動程式的代碼了。當然,如果你使用Visual Studio .Net,可能關於啟動程式的代碼它都為了準備好了。前面介紹過,啟動Windows Forms程式只需要通過Application類即可,該類是一個封裝類,大多數的方法都是表態的,不能建立該類的執行個體即可以使用。使用Application一般情況下需要一個表單(不是絕對需要),而全面你所設計的表單類此時可用上了,直接構造你表單類的一個執行個體即可。而Application類將會為你做很多事,包括記憶體及資源分派,各種底層組件的調用等。
4 一個完整而簡單Windows Forms程式
下面我們將列出一個用C#寫的完整整而非常簡單的Windows Forms程式,該程式通過繼承定義了一個自己的表單類HelloWorld。啟動程式將看到程式上有一個按鈕控制項,點擊按鈕控制項將顯示一個快顯功能表。
程式幾乎包括了前面所講的各種要點如表單、控制項、控制項屬性、事件、事件響應等。代碼中包括了具體的注釋說明,請大家仔細體會!
////////HelloWorld.cs來源程式
using System;//引入System命名空間,其包括了.Net中大多數的基礎資料型別 (Elementary Data Type),如int,string等
using System.Drawing;//引入System.Drawing命名空間,其中包括了Windows Forms中的各種基本的映像操作要素
using System.Windows.Forms;//引入System.Windows.Forms命名空間,其定義了Windows Forms程式中所涉及到的大部份類,如表單、控制項、Application類等
public class HelloWorld:System.Windows.Forms.Form //通過繼承Form而定義一個HelloWorld的表單類,該類具有Form類的所有成員及特性
{
private System.Windows.Forms.Button button1;//定義HelloWorld類的一個成員(一個按鈕)
public HelloWorld()//HelloWorld類的建構函式
{
button1=new Button();//產生一個Button執行個體,也可以說成初始化HelloWorld類的button1成員
button1.Text="TestButton";//設定按鈕button1的Text屬性值
button1.Location=new Point(100,100);//設定按鈕button1的Location值
button1.Click+=new System.EventHandler(MyMethod);//為按鈕button1的Click事件添加回應程式法
this.Text="Hello World!";//設定自訂表單的文本(Text)屬性,該屬性將成為表單的標題
this.Controls.Add(button1);//把按鈕表單添加到表單中,使表單可以顯示。
}
public static void Main()//程式入口
{
Application.Run(new HelloWorld());//產生HelloWorld執行個體並通過Application.Run()靜態方法啟動程式,
}
private void MyMethod(object sender,System.EventArgs e)//定義事件響應函數,請注意參數的使用,其與System.EventHandler代表中的參數要一致
{
MessageBox.Show("You have clicked the Button","Information");//使用彈出框彈出提示資訊。
}
}
編譯該程式的方法,直接把代碼拷到記事本中,儲存為HelloWorld.cs檔案,然後在命令列輸入csc HelloWorld.cs即可編譯(我們假設HelloWorld.cs在目前的目錄上)。編譯完成後將產生一個名為HelloWorld.exe的檔案,些時直接在命令列輸入HelloWorld程式即可運行程式。