一文帶你快速學會C#中WinForm框架的使用詳解
前文提要:
超快速成,零基礎掌握C#開發中最重要的概念
抽絲剝繭,C#面向對象快速上手
Label和控件屬性
WinForm是一門非常經濟實惠的技術,就是說,可以在短時間內學會,並迅速借此進行項目開發。盡管在很多方面不夠現代,做出來的東西又Low又醜,但絕大多數的應用場景也不需要高端大氣上檔次。或許正是因為這種特點,WinForm在工控領域用得非常多,畢竟可以迅速實現某個小功能。
在VS中創建新項目,模板為C#Windows窗體應用,名稱位置啥的隨便選。
創建成功之後,進入設計窗口,可以看到默認已經生成瞭一個窗口,如下圖所示,然後就可以愉快地拖控件瞭,所有控件都在左側的工具箱裡。如果初次打開看不到工具箱,可以試一下快捷鍵Ctrl+Alt+X。
接下來用鼠標把工具箱中的Label拖動到窗口Form1上面,同時關註VS右下角的屬性欄,可以看到Label的屬性,如下圖所示。
當然,VS中的很多工具欄都可以拖動到任意位置,上圖就是點擊屬性欄的▼標志,選擇浮動,然後拖動到瞭Form1的右側。
其中,(Name)為這個Label1控件在程序中的名字,若想在C#中調用這個標簽,就得用到這個名字。
拖動屬性欄的滾動條,在外觀這一標題下,有Text屬性,其內哦讓那個為label1,這個Text是Label1這個控件所展示出來的字符,將其更改後,窗口上的標簽也響應發生變化,就像下圖這樣
外觀這一主題中的參數,在改動之後幾乎都沒有什麼嚴重後果,比如各種配色啥的都可以嘗試一番,這裡就不一一演示瞭。
按鈕和回調邏輯
接下來從工具箱中拖動一個按鈕,即把Button拖動到Form1上,將其Text屬性改為新Label;將其Name改為btnChangeLabel。
然後雙擊這個按鈕,神奇的一幕發生瞭,設計窗口不見瞭,取而代之的是我們熟悉的代碼界面,其內容為
namespace WinFormsTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnChangeLabel_Click(object sender, EventArgs e) { } } }
命名空間就不說瞭,Form1是一個繼承瞭Form的類,而其修飾語中,除瞭老面孔public,又多瞭一個partial,這個partial表示下面花括號括起來的代碼,可以是Form1的一部分。更具體一點,就是說這個Form1類可以寫在多個文件中。
接下來,public Form1(),是Form1的構造函數,無需贅言。
再往下,就是剛剛雙擊按鈕所自動生成的響應函數,其中private表示這個函數是個私有函數,隻有在Form1這個類中才能被調用。函數名也是自動生成的,包括兩部分,下劃線前面的就是按鈕的名字,下劃線後面Click,表示這個函數的觸發條件是單擊。
然後函數的輸入參數有兩個,分別是object類型的sender,以及EventArgs類型的e,前者表示剛剛點擊的那個按鈕,後者表示點擊的這個動作。
梳理一下就是,點擊按鈕是產生瞭兩個變量,即按鈕和動作,這兩個變量被傳遞給瞭btnChangeLabel_Click函數,接下來我們就要寫一下這個函數
private void btnChangeLabel_Click(object sender, EventArgs e) { label1.Text = "並沒有新Label,隻有新Text"; }
label1就是上一節創建的Label,label1.Text就是上一節所說的Label的Text屬性。這個函數的意思是,當點擊按鈕的時候,label1的文字發生變化,效果為
事件
點擊Shift+F7可以從代碼界面返回到設計界面,選中按鈕後,查看右下角其對應的屬性欄,可以看到一個閃電的小圖標,點擊這個圖標,下拉滾動條,可以看到操作這個子標題下,有個Click的操作,其右側內容為btnChangeLabel_Click。
至此,事情的前因後果應該就清晰瞭,按鈕btnChangeLabel正是在這個小閃電這裡,註冊瞭Click這種操作,並取名為btnChangeLabel_Click,然後才有瞭代碼界面中的函數。
在這個小閃電所對應的列表中,就是可以綁定到按鈕btnChangeLabel中的各種事件,Click隻是其中一種。這些事件被詳細地分門別類,這些類別也很有條理,隻有最後一組Key,不知道被哪個神仙翻譯成瞭鑰匙,其實指的應該是按鍵吧。
比如,接下來可以註冊一個KeyDown的命令,在其右側填入btnTest_KeyDown後然後回車,VS會自動跳回到代碼界面,並已經新建好瞭相應的函數
private void btnTest_KeyDown(object sender, KeyEventArgs e) { }
這是個鍵盤按鍵觸發的事件,裡面的函數隨意填寫就好,
接下來從工具箱中拖動一個TextBox到Form1,在右下角的屬性欄裡,將其重命名為tbTest。別忘瞭點擊一下小閃電左邊的小扳手,否則在事件列表中是找不到Name屬性的。
接下來點擊F7,跳轉回C#界面,更改在btnTest_KeyDown這個函數
private void btnTest_KeyDown(object sender, KeyEventArgs e) { tbTest.Text = $"{e.KeyCode}:啊我被按下瞭"; }
其中,$字符串早就講過瞭,可以將花括號中的數據轉成字符串。e.KeyCode表示按鍵對應的代碼。
因為強迫癥的原因,貌似還得新建一個對偶的函數,細節就不贅述瞭,反正寫成如下這樣
private void btnTest_KeyUp(object sender, KeyEventArgs e) { tbTest.Text = $"{e.KeyCode}:嘿嘿我又彈起來瞭"; }
效果為
常用控件
在設計界面,Textbox與Label, Button似乎有點區別,即選中之後,其右上角會出現一個三角▶,點擊之後會出現一個單選框,內容是多行。
也就是說,正常創建的Textbox是不支持回車換行的,但選擇瞭多行之後,就支持瞭。
有這種額外內容的控件為數不少,比如ComboBox,下拉選框,將其從工具箱拖動到Form1之後,點擊▶,選擇編輯項,於是彈出瞭字符串集合編輯器,按照提示,在裡面輸入
春
夏
秋
冬
然後運行程序,可以自行看看效果。
PictureBox,顧名思義是圖片箱子,將其拖動到Form1後,同樣點擊▶->選擇圖像,會彈出選擇資源對話框,選擇本地資源->導入,就可以把任何一張圖片展示在PictureBox中瞭。如果圖像尺寸不合適,可以將大小模式選為Zoom。
最後,有三個簡單控件一直沒來得及說,即CheckBox,LinkLabel以及NumericUpDown,這三個控件分別是單選框、鏈接標簽以及數值框。
其中,單選框可以與佈爾數據類型相匹配,其屬性Checked為佈爾數據類型,故常用於表示某種開關;LinkLabel的外表是有下劃線像鏈接一樣的Label,但其內在卻是個按鈕,可以綁定點擊事件;NumericUpDown的Value屬性為數值類型,常用於設置數值變量。
到此這篇關於一文帶你快速學會C#中WinForm框架的使用詳解的文章就介紹到這瞭,更多相關C# WinForm框架內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!