亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

Windows Forms (一)

2019-11-17 02:31:12
字體:
來源:轉載
供稿:網友

Windows Forms (一)

導讀

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

運行 效果

image

可以看到一個簡單得不能再簡單的Windows Form 程序跑起來了。

對上面程序的說明

從上面的代碼可以看出,Windows Forms 是一個類(其實應該是Windows Forms 窗體類是一個類),一個類要運行得有一個 Main 方法,上面Main方法中有一個 Application.Run(new App()); 這句話貌似是讓 Windows Forms 跑起來的語句(Run)。再看引用,System.Windows.Forms 從這命名上看這應該是 Windows Forms的程序集。好下面我們正式揭開謎底

Windows 窗體 是任何繼承 Form 的類叫窗體

System.Windows.Forms 命名空間包含了Windows Forms 程序的核心內容,它包括Windows Forms 的核心架構可視化控件(設計時可見且運行時也可見)、組件(有設計時和運行是都可見的組件如ToolTip和僅設計時可見運行時不可見的組件如Timer)、對話框(公共對話框如OpenFileDialog)

System.Windows.Forms 命名空間中的核心類型

1、Application 該類封裝了Windows 窗體應用程序運行時操作

2、常用控件類(Button、ComboBox、CheckBox、TextBox、Label、DateTimePicker、ListBox、PictureBox、TreeView)

3、Form 窗體類

4、布局控件類(Panel、Splitter 、GroupBox、TabControl)

5、菜單控件 (Menu、MenuItem 、ContextMenu)

6、各種對話框

System.Windows.Forms.Application 類需關注的方法 Run() 運行Windows Forms 窗體 DoEvents() 提供應用程序在冗長的操作期間處理當前排在消息隊列里的信息的能力 Exit() 終止窗口應用程序并從承載的應用程序域中卸載 EnableVisualStyles() 配置應用程序以支持 Windows xp 界面外觀

現在我們分析下上面的程序:

1、上面的代碼寫的是一個可執行程序(exe),所以它有一個Main方法。

2、App類是一個窗體類,因為它繼承了 System.Windows.Forms.Form類

3、通過 Application.Run(Windows 窗體實例); 運行得到我們看到的Windows Forms 程序

上面的代碼耦合度太強了,應用程序的運行(創建AppDomian)和窗體邏輯耦合到一起(說白了窗體類應該只關注窗體邏輯,不關注誰來加載這個窗體到AppDomain中運行)所以上面的代碼最好改為如下的代碼:

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

image

Windows Forms 中的事件處理及手寫一個帶鼠標移動事件的窗體

System.EventHandler 原型為 public delegate void EventHandler(object sender,EventArgs e); 它是 WinForm程序事件處理的最原始委托,sender 表示發送事件的對象,e 表示事件相關信息

Windows Forms 事件的相關委托定義都類似與System.EventHandler,如鼠標相關的委托MouseEventHandler,它的原型如下

public delegate void MouseEventHandler(object sender,MouseEventArgs e)

我們看下 MouseMove事件 所有與鼠標相關的事件(MouseMove MouseUp 等)與MouseEventHandler 委托結合工作,MouseEventArgs 擴展了EventArgs增加了一下屬性 Button 獲取哪個鼠標被單擊 Clicks 獲取鼠標被按下和釋放的次數 X 鼠標單擊處的 x 坐標 Y 鼠標單擊處的 y 坐標

看代碼

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

運行效果

image

本文完


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲无限av看| 午夜精品久久久99热福利| 欧美精品情趣视频| 超薄丝袜一区二区| 91av在线精品| 亚洲加勒比久久88色综合| 精品亚洲一区二区三区四区五区| 少妇久久久久久| 国产xxx69麻豆国语对白| 国产丝袜高跟一区| 国产香蕉97碰碰久久人人| 国产一区二区三区高清在线观看| www.欧美三级电影.com| 精品国产一区二区三区久久久| 久久99国产精品自在自在app| 亚洲美腿欧美激情另类| 欧美激情久久久久| 亚洲美女av黄| 日韩精品高清在线观看| 九九精品在线播放| 高潮白浆女日韩av免费看| 欧洲成人免费aa| 日韩欧美精品网站| 成人欧美一区二区三区在线| 伊人久久综合97精品| 欧美性猛交丰臀xxxxx网站| 一区二区三区四区精品| 欧美日韩性视频在线| 亚洲大尺度美女在线| 尤物九九久久国产精品的特点| 97精品视频在线观看| 欧美高清性猛交| 日韩中文在线不卡| 亚洲a在线观看| 国产成人综合精品在线| 久久夜色撩人精品| 国产97色在线| 久久精品中文字幕一区| 欧美日韩在线视频观看| 成人在线视频网站| 国产精品久久久久久亚洲影视| 欧美日韩国产激情| 欧洲中文字幕国产精品| 久久久久久久久亚洲| 国内精品久久久| 国产精品毛片a∨一区二区三区|国| 亚洲自拍欧美另类| 日韩精品极品在线观看| 日韩av片永久免费网站| 久久久久久12| 欧美性猛交xxxx富婆| 青青在线视频一区二区三区| 亚洲天堂视频在线观看| 国产日韩欧美日韩| 国产精品99导航| 国产精品第七十二页| 久久精品国产亚洲7777| 日韩av电影手机在线| 亚洲欧美日韩中文视频| 欧美成人剧情片在线观看| yellow中文字幕久久| 色偷偷av亚洲男人的天堂| 欧美日韩国产在线播放| 欧美中文在线观看| 国产精品偷伦免费视频观看的| 国产在线播放不卡| 亚洲精选在线观看| 精品高清美女精品国产区| 国产精品九九久久久久久久| 亚洲免费视频一区二区| 久久久久国产精品免费网站| 亚洲精品电影在线| 久热精品视频在线免费观看| 成人a视频在线观看| 国产aⅴ夜夜欢一区二区三区| 欧美视频免费在线观看| 91香蕉电影院| 久久综合五月天| 欧美精品videosex极品1| 国产在线日韩在线| 久久视频在线观看免费| 国产va免费精品高清在线观看| 欧美黑人视频一区| 午夜欧美不卡精品aaaaa| 亚洲一区二区国产| 中文字幕少妇一区二区三区| 国产日韩欧美日韩大片| 色偷偷噜噜噜亚洲男人的天堂| 97在线观看视频国产| 国产日韩欧美在线播放| 久久国产天堂福利天堂| 亚州成人av在线| 中文字幕国产精品久久| 亚洲深夜福利视频| 国产99在线|中文| 国产69精品久久久| 日韩欧美国产视频| 精品久久在线播放| 国产精品欧美日韩久久| 国产欧美一区二区三区久久| 欧美激情一二三| 97免费视频在线| 91av国产在线| 国产精品日韩在线| 国产一区玩具在线观看| 国产精品视频精品| 成人av资源在线播放| 精品国产一区二区三区久久狼5月| 亚洲美女av电影| 777精品视频| 久久综合电影一区| 国产午夜精品全部视频在线播放| 日韩中文字在线| 爱福利视频一区| 日韩在线视频网站| 亚洲人成啪啪网站| 国产成人精彩在线视频九色| 欧美巨乳美女视频| 亚洲欧美综合精品久久成人| 91免费在线视频| 日韩成人中文字幕在线观看| 久久伊人色综合| 一区二区三区国产在线观看| 97av在线视频| 日韩女优在线播放| 国产精品video| www.亚洲一二| 亚洲精品永久免费精品| 国产精品视频免费观看www| 欧美三级免费观看| 成人自拍性视频| 日本精品中文字幕| 日韩av在线网址| 亚洲人成毛片在线播放| 国产精品h片在线播放| 亚洲va欧美va在线观看| 一本色道久久88精品综合| 亚洲欧美另类自拍| 欧美午夜激情在线| 一区二区欧美久久| 亚洲国产成人av在线| 亚洲精品欧美极品| 亚洲色图第一页| 国产精品福利网站| 日本欧美爱爱爱| 97超碰色婷婷| 精品久久久国产精品999| 国产婷婷97碰碰久久人人蜜臀| 免费97视频在线精品国自产拍| 国产999精品久久久| 青青草99啪国产免费| 69av在线播放| 夜夜嗨av一区二区三区四区| 欧美激情中文字幕在线| 亚洲成人aaa| 日韩精品久久久久久福利| 91豆花精品一区| 亚洲风情亚aⅴ在线发布| 亚洲娇小xxxx欧美娇小| 亚洲日本成人网| 亚洲欧美另类中文字幕| 成人在线小视频| 国产综合福利在线| 久久久久免费精品国产|