導讀
1、什麼是 Windows Forms
2、需要學Windows Forms 麼?
3、如何手寫一個簡單的Windows Forms 程序
4、對上面程序的說明
5、Form 類與Control類
6、Windows Forms 中的事件處理及手寫一個帶鼠標移動事件的窗體
什麼是Windows Forms
通常我們的說的Windows Forms 指的是一類GUI(圖形用戶界面)程序的統稱,Windows Forms 是隨著 .NET 1.0 一起發布的,但市面上的 Windows Forms 程序主要還是 .NET 2.0 以上版本的,.NET 3.5 後主推的GUI程序變為 WPF,Windows Forms 退居2線。
需要學Windows Forms 麼?
這個問題的答案因人而異,如果對於學生而言,我建議直接跳過Windows Forms 學WPF,WPF的思維模式比Windows Forms的事件處理模式要優秀不少。對於找工作(或已工作)的程序員而言,這個就要取決於公司的需求,在很多做行業軟件的公司,用Windows Form 比 WPF多,雖然WPF的界面比原生Windows Forms炫太多了,但是Windows Forms 第三方的控件庫彌補了這個問題。
如何手寫一個簡單的Windows Forms 程序
直接上代碼: FirstWinForm.cs
using System; using System.Windows.Forms; namespace DemoWinForm { class App : Form { static void Main() { Application.Run(new App()); } } }
編譯命令: csc /t:winexe FirstWinForm.cs
運行 效果
using System; using System.Windows.Forms; namespace DemoWinForm { // 注意這裡我用靜態類 static class App { static void Main() { Application.Run(new MainForm()); } } public class MainForm : Form{} }
Form 類與Control類
我們先看下 System.Windows.Forms.Form 的繼承關系圖
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.Control
System.Windows.Forms.ScrollableControl
System.Windows.Forms.ContainerControl
System.Windows.Forms.Form
標紅的是我認為需要重點關注的類,所有可視化控件(如 Button 之類)都是繼承自 System.Windows.Forms.Control,而組件則是繼承自 System.ComponentModel.Component。
System.Windows.Forms.Control 類提供了一個可視化控件的絕大多數成員(控件名、Size、字體、前景和背景色、父容器、常用事件如鼠標相關、鍵盤相關等)詳細內容參見MSDN
使用Control類的例子:
using System; using System.Windows.Forms; using System.Drawing; namespace DemoWinForm { static class App { static void Main() { Application.Run(new MainForm()); } } public class MainForm : Form { public MainForm() { Text = "一個窗口"; Height = 300; Width = 500; BackColor = Color.Green; Cursor = Cursors.Hand; } } }
編譯 csc /t:winexe UseControlDemo.cs
using System; using System.Windows.Forms; using System.Drawing; namespace DemoWinForm { static class App { static void Main() { Application.Run(new MainForm()); } } public class MainForm : Form { public MainForm() { this.Text = "一個窗口"; this.Height = 300; this.Width = 500; BackColor = Color.Green; Cursor = Cursors.Hand; this.MouseMove += new MouseEventHandler(MainForm_MouseMove); } void MainForm_MouseMove(object sender, MouseEventArgs e) { this.Text = string.Format("當前鼠標坐標: [{0},{1}]",e.X,e.Y); } } }
編譯 csc /t:winexe MouseMoveDemo.cs
運行效果
本文完