參考、資源等見單章:https://blog.csdn.net/qq_35479392/article/details/100582710
(原文爲Word版,食用更佳)
4.2 WinForm常用控件
組件 = 可視化的組件(控件) + 不可視化的組件
控件
含義:是界面組件;是帶有可視化表示形式的組件;是包含在窗體內的對象。
作用:主要功能是實現輸入和輸出;不同類型的控件具有其特有的屬性和事件。
4.2.1 文本類控件
文本類控件 包括 標籤控件(Label)、按鈕控件(Button)、文本框控件(TextBox)、格式文本框控件(RichTextBox)等。
1. Label控件
由System.Windows.Forms.Lable類提供,主要用於 顯示文本。
表1 Lable控件的常用屬性和事件
類別 |
名稱 |
用途 |
屬性 |
Name |
指示代碼中用來標識該對象的名稱 |
Text |
顯示的文本 |
|
Visible |
確定該控件是可見的還是隱藏的 |
|
Font |
顯示控件中文本的字體 |
|
事件 |
Click |
單擊事件 |
2. Button控件
由System.Windows.Forms.Lable類提供,主要用於 接收用戶對鼠標的操作,完成用戶與應用程序之間的交互。
Button控件支持的操作包括:鼠標的單擊、雙擊、鍵盤的Enter鍵操作
表2 Button控件的常用屬性和事件
類別 |
名稱 |
用途 |
屬性 |
Name |
指示代碼中用來標識該對象的名稱 |
Text |
顯示的文本 |
|
Size |
控件的大小(以像素爲單位) |
|
Image |
設置控件的圖像 |
|
事件 |
Click |
單擊事件 |
3. TextBox控件
由System.Windows.Forms.TextBox類提供,主要用於 在應用程序中接收用戶輸入的文字,它允許用戶輸入任何字符。
用戶的所有輸入都保存在TextBox控件的Text屬性中.
文本框支持3種輸入模式:單行、多行、密碼 輸入模式
單行:最多可輸入2048個字符(默認)
多行:最多可輸入32KB的文本(設置文本框的Multiline屬性爲true)
密碼:無論用戶輸入什麼文本,系統只顯示密碼字符(設置文本框的UseSystemPasswordChar屬性爲true)
表3 TextBox控件的常用屬性和事件
類別 |
名稱 |
用途 |
屬性 |
Name |
指示代碼中用來標識該對象的名稱 |
Text |
顯示的文本 |
|
ScrollBars |
指定對於多行編輯控件,將爲此控件顯示哪些滾動條 |
|
PasswordChar |
設置密碼字符串 |
|
UseSystemPasswordChar |
指示編輯控件中的文本是否以默認的密碼字符顯示 |
|
ReadOnly |
指示文本框中的文本是否爲只讀 |
|
Multiline |
控制編輯控件的文本是否能跨越多行 |
|
事件 |
Click |
單擊事件 |
Leave |
失去輸入焦點時引發的事件 |
|
TextChanged |
在控件上更改Text屬性的值時引發的事件 |
代碼實例
需求:設計一個簡單的用戶登陸界面,當輸入用戶名和密碼正確時,提示登陸成功,否則提示登陸失敗。
步驟:
首先,將所需的窗體及控件的屬性以表格形式列出;
然後,通過控件的關聯事件實現功能;
最後,測試。
代碼:
Form1.cs:
namespace Controls
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnLogin_Click(object sender, EventArgs e)
{
if (txtName.Text == "user" && txtPassword.Text == "123")
{
MessageBox.Show("登陸成功!");
}
else
{
MessageBox.Show("用戶名或密碼錯誤!");
}
}
private void btnReset_Click(object sender, EventArgs e)
{
//遍歷窗體中所有控件
foreach (Control item in this.Controls)
{
if (item is TextBox)
{
item.Text = "";
}
}
}
}
}
結果:
4. RichTextBox控件
RichTextBox,即有格式文本框控件,由System.Windows.Forms. RichTextBox類提供。RichTextBox控件使用標準的格式化文本,稱爲富文本格式。
主要作用:打開和保存RTF文件和普通ASCII文本文件,並且顯示、輸入和操作帶有格式的文本,可以顯示字體、顏色和鏈條,從文件加載文本和加載嵌入的圖像,以及查找指定的字符,因此也常常被稱爲增強的文本框。
TextBox、RichTextBox 共同點和區別:
共同點:用於對文本的處理
不同點:前者 常用於輸入較短的文本字符;後者 多用於顯示和輸入格式化的文本。
表4 RichTextBox控件的常用屬性和事件
類別 |
名稱 |
用途 |
屬性 |
Name |
指示代碼中用來標識該對象的名稱 |
Lines |
多行編輯中的文本行,作爲字符串值的數組 |
|
Size |
控件的大小(以像素爲單位) |
|
Location |
控件左上角相對於其它容器左上角的座標 |
|
Rtf |
與Text屬性相似,但包括RTF格式的文本 |
|
事件 |
TextChanged |
在控件上更改Text屬性的值時引發的事件 |
代碼實例
需求:設計一個簡歷編輯器,實現對jianli.rtf文件的各種操作。
設計:
(1)確定控件、及其屬性、及關聯的事件
窗體及控件屬性設置
窗體和控件 |
屬性 |
屬性值 |
Form2 |
Text |
簡歷編輯器 |
RichTextBox |
Name |
richTextBox1 |
button1 |
Name Text |
btnLoad 加載 |
Button2
|
Name Text |
btnSave 保存 |
Button3 |
Name Text |
btnCopy 複製 |
Button4 |
Name Text |
btnCut 剪切 |
Button5 |
Name Text |
btnPaste 粘貼 |
Button6 |
Name Text |
btnBackColor 背景色 |
Button7 |
Name Text |
btnColor 顏色 |
Button8 |
Name Text |
btnFont 字體 |
(2)功能實現
新增一個Form2窗體
…
(3)代碼+運行結果圖
Main()函數中相應語句修改爲:
Application.Run(new Form2());
什麼是句柄?
參考 https://baike.baidu.com/item/句柄
句柄(handle),有多種意義,第一種解釋:句柄是一種特殊的智能指針 。當一個應用程序要引用其他系統(如數據庫、操作系統)所管理的內存塊或對象時,就要使用句柄。 [1] 第二種解釋:整個Windows編程的基礎。一個句柄是指使用的一個唯一的整數值,即一個4字節(64位程序中爲8字節)長的數值,來標識應用程序中的不同對象和同類中的不同的實例,諸如,一個窗口,按鈕,圖標,滾動條,輸出設備,控件或者文件等。應用程序能夠通過句柄訪問相應的對象的信息,但是句柄不是指針,程序不能利用句柄來直接閱讀文件中的信息。如果句柄不在I/O文件中,它是毫無用處的。 句柄是Windows用來標誌應用程序中建立的或是使用的唯一整數,Windows大量使用了句柄來標識對象。
代碼實例注意點
確保在使用控件的LoadFile前,該控件的句柄已經被創建。
參考msdn:
RichTextBox.LoadFile Method
LoadFile(String)
Loads a rich text format (RTF) or standard ASCII text file into the RichTextBox control.
public void LoadFile (string path);
path String
The name and location of the file to load into the control.
Note
The LoadFile method will not open a file until a handle is created for the RichTextBox. Ensure that the control's handle is created before calling the LoadFile method.
確保在使用控件的LoadFile前,該控件的句柄已經被創建。
4.2.2 選擇類控件
在使用文本框構建用戶的輸入界面時,雖然可以檢查或驗證用戶輸入的有效性,但仍然不能完全確保用戶的輸入是系統所期望的數據。爲此,必須設計只能通過選擇即可完成的數據輸入的操作界面。.NET Framework爲Windows窗體提供了豐富的選擇類控制,選擇類控件包括單選按鈕控件(RadioButton)、複選框控件(CheckBox)、列表框控件(ListBox)以及下拉框控件(ComBox)等。
- RadioButton控件
RadioButton,即單選按鈕控件,是由System.Windows.Forms.RadioButton類提供的,主要作用於將一個或者多個選項列出,讓用戶從中選擇一項。
表1 RadioButton控件的常用屬性和事件
類別 |
名稱 |
用途 |
屬性 |
Name |
指示代碼中用來標識該對象的名稱 |
Text |
顯示的文本 |
|
Checked |
指示單選按鈕是否選中 |
|
AutoSize |
指定控件是否自動調整自身的大小以適應其內容的大小 |
|
事件 |
CheckedChanged |
每當Changed屬性更改值時發生 |
2. CheckBox控件
CheckBox,即複選框控件,是由System.Windows.Forms.CheckBox類提供的,主要用於將一個或多個選項列出,讓用戶從中選擇一項或多項。當某一個選項被選中後,其左邊的小方框會顯示有一個勾。
表2 CheckBox控件的常用屬性和事件
類別 |
名稱 |
用途 |
屬性 |
Name |
指示代碼中用來標識該對象的名稱 |
Text |
顯示的文本 |
|
Checked |
指示單選按鈕是否選中 |
|
CheckState |
用來設置或返回複選框的狀態,有3種可能:Checked、Unchecked、Indeterminage |
|
事件 |
CheckedChanged |
每當Changed屬性更改值時發生 |
CheckStateChanged |
每當CheckState屬性值更改時發生 |
3. ListBox控件
ListBox,即列表框控件,是由System.Windows.Forms.ListBox類提供的,主要作用於將一個集合數據以列表框的形式顯示給客戶,供用戶從中選擇一項或多項。ListBox控件有兩種工作模式:單選模式和多選模式。單選模式時,列表框與單選按鈕的功能相同;多選模式時,則與複選框功能相同。所不同的是,需要多個RadionButton控件或CheckBox控件才能構造一個選項組。而使用ListBox控件,則只需要一個就可以生成一個選項列表。
表3 CheckBox控件的常用屬性和事件
類別 |
名稱 |
用途 |
屬性 |
Name |
指示代碼中用來標識該對象的名稱 |
Enabled |
指示是否啓用該控件 |
|
Items |
列表框中的項目集合 |
|
ItemHeight |
列表框中項的高度 |
|
SelectionMode |
指示列表框將是單項、多項還是不可選擇 |
|
事件 |
SelectedIndexChanged |
SelectedIndex屬性值更改時發生 |
注意:當ListBox的SelectionMode的屬性爲MultiSimple或MultiExtended時,SelectedIndex返回的是選中的最小索引,SelectedItem返回的是選中的索引值最小的選項值。Items本身也包含很多屬性,如Count屬性指示Items包含項的個數等。
4. ComboBox控件
ComboBox,即下拉框控件,是由System.Windows.Forms.ComboBox類提供的,主要用於將一個集合數據以下拉列表框顯示給用戶,供用戶從中選中一項。ComboBox控件的默認行爲是顯示一個可編輯文本框,該文本框具有一個隱藏的下拉列表框。ComboBox控件只支持單選,可替代RadioButton選項組。
表4 ComboBox控件的常用屬性和事件
類別 |
名稱 |
用途 |
屬性 |
Name |
指示代碼中用來標識該對象的名稱 |
Items |
列表框中的項目集合 |
|
事件 |
SelectedIndexChanged |
SelectedIndex屬性值更改時發生 |
5. 小綜合 代碼實例
需求:設計一個註冊界面,分別定義RadioButton控件顯示性別,ComboBox控件顯示城市;CheckBox控件顯示技術方向;ListBox控件顯示興趣愛好。當用戶單擊“註冊”按鈕時,如果填寫的信息完整,提示“註冊成功!“;否則,提示”請填寫全部信息“。
設計:
選擇類控件包括單選按鈕控件(RadioButton)、複選框控件(CheckBox)、列表框控件(ListBox)以及下拉框控件(ComBox)等。
(1)控件屬性列表 作成
…
(2)功能設計
…
(3)運行結果和代碼實現:
6. 注意點 代碼實例
參考:https://blog.csdn.net/lubiaopan/article/details/5784846
Control類是Form和各種Windows 窗體控件設備的基類,屬於System.Windows.Forms命名空間,每個window控件設備都有一個Controls屬性,這個屬性爲ControlCollection類型,ControlCollection爲一個Control對象的集合,包含的是屬於某個控件的所有控件對象,利用Control和ControlCollection我們可以輕鬆地對某個窗體程序所含的各種控件進行控制。 當我們開發具有錄入功能的界面的時候,爲了防止提交後的二次(重複)錄入,希望點擊提交按鈕並提示成功後,界面的所有文本框能夠自動清空,一個笨方法是逐個的對TextBox進行Clear()操作,這種方法會產生大量的代碼,並且效率很低。
對於上面所述的清空操作,可以仔細想一想,既然每個窗體控件都是繼承自Control類,並且含有Controls屬性,那利用Control和ControlCollection,利用函數的層層遞歸,就可以輕鬆實現Clear()操作,代碼如下:...
原文鏈接:https://blog.csdn.net/lubiaopan/article/details/5784846
4.2.3 分組類控件
分組類控件包括 面板控件(Panel)、分組框控件(GroupBox)、選項卡控件(TabControl)等。
1. Panel控件
面板控件,由System.Windows.Forms.Panel類提供,主要用於將其它控件組合在一起放在一個面板上,使這些控件更容易管理。
表1 Panel控件的常用屬性和事件
類別 |
名稱 |
用途 |
屬性 |
Name |
指示代碼中用來標識該對象的名稱 |
Size |
控件的大小(以像素爲單位) |
|
Location |
控件左上角對於其它容器左上角的座標 |
|
AutoScroll |
指示當前控件內容大於它的可見區域時是否自動顯示滾動條 |
|
BorderStyle |
指示面板是否有邊框 |
|
事件 |
Paint |
在控件需要重新繪製時發生 |
Panel控件 代碼實例
需求:使用Panel控件設計一個顯示列表,當單擊“增加”按鈕時,列表框中增加一項“子項”,當列表框大小超出可見區域時將自動顯示滾動條。
設計:
表2 用到的控件及其屬性設置
窗體和控件 |
屬性 |
屬性值 |
Form4 |
Text |
面板 |
panel1 |
Name |
Panel |
AutoScroll |
True |
|
BorderStyle |
Fixed3D |
|
Button1 |
Name |
btnAdd |
Text |
增加 |
|
listBox1 |
Name |
lbxText1 |
運行結果和代碼:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form4());
}
- GroupBox控件
分組框控件,由System.Windows.Forms. GroupBox類提供,主要用於爲其它控件提供可識別的分組。在窗體設計時,通常按功能把窗體劃分爲若干個區域,每個區域使用一個GroupBox控件表示。例如,把相關的各選項放入一個分組框,就可以爲用戶提供一個統一的外觀或邏輯處理。
表2 GroupBox控件的常用屬性和事件
類別 |
名稱 |
用途 |
屬性 |
Name |
指示代碼中用來標識該對象的名稱 |
Text |
顯示的文本 |
|
事件 |
Enter |
在控件成爲該窗體的活動控件時發生 |
- TabControl控件
選項卡控件,由System.Windows.Forms. TabControl類提供,主要用於將相關的組件組合到一系列選項卡頁面上,TabControl控件管理TabPages集合。
表3 TabControl控件的常用屬性和事件
類別 |
名稱 |
用途 |
屬性 |
Name |
指示代碼中用來標識該對象的名稱 |
TabPages |
選項卡集合 |
|
Text |
選項卡顯示的文本 |
|
Apperance |
指示選項卡是繪製成按鈕還是繪製成常規選項卡 |
|
事件 |
Click |
單擊事件 |
Panel控件 代碼實例
需求:設計一個分組窗體,當單擊“選項”組中的“選項一”或“選項二”按鈕時,在“標籤”組中將對應顯示TabControl控件中的選項卡。
設計:…
運行結果和代碼:
4.2.4 其它控件
1. 圖片控件
PictureBox,即圖片框控件,是由System.Windows.Forms.PictureBox類提供,主要用於在應用程序中顯示圖片,圖片框支持Bitmap、Gif、Jpg等多種圖片格式。PictureBox控件的Image屬性是一個Image類的值,Image類的對象用來保存圖形信息,可以使用FormFile()方法將一個指定位置的圖形文件加載到Image對象中。
表1 PictureBox控件的常用屬性和事件
類別 |
名稱 |
用途 |
屬性 |
Name |
指示代碼中用來標識該對象的名稱 |
Image |
圖片路徑 |
|
Size |
控件的大小(以像素爲單位) |
|
SizeMode |
控件圖片框將如何處理圖像位置和控件大小 |
|
事件 |
Click |
單擊事件 |
PictureBox控件 代碼實例
需求:設計一個圖片顯示窗體,當單擊“顯示圖片”按鈕時,在圖片框中將顯示指定圖像(圖片路徑自定義)
設計:
…
運行結果和代碼:
在Main函數相應地中修改爲,Application.Run(new Form6());
2. 菜單控件
MenuStrip,即下拉菜單控件,是由System.Windows.Forms.MenuStrip類提供的,是應用程序菜單結構的容器。
表2 MenuStrip控件的常用屬性和事件
類別 |
名稱 |
用途 |
屬性 |
Name |
指示代碼中用來標識該對象的名稱 |
Text |
顯示的文本 |
|
Items |
顯示項的集合 |
|
事件 |
ItemClick |
當單擊項時發生 |
在窗體界面編輯菜單欄的時候,點擊 下三角 按鈕 會出現如上圖所示的三個選項:MenuItem、ComboBox、TextBox
通過ShorcutKeys,可爲菜單添加快捷鍵,如上圖所示
PictureBox控件 代碼實例
需求:設計一個菜單窗體,當單擊“窗體”菜單中窗體名時,將打開對應的窗體界面,當單擊“退出”菜單時,將退出程序。
設計:
…
運行結果和代碼:
3. 定時器控件
Timer,即定時器控件,是由System.Windows.Forms.Timer類提供的。它是一個功能性控件,沒有用戶界面,主要用於在程序中按照時間間隔產生定時消息,然後執行消息代碼。
表3 Timer控件的常用屬性和事件
類別 |
名稱 |
用途 |
屬性 |
Name |
指示代碼中用來標識該對象的名稱 |
Interval |
事件的頻率(以毫秒爲單位) |
|
Enabled |
是否產生定時消息 |
|
事件 |
Tick |
每當經過指定的時間間隔時發生 |
4. 狀態欄控件
StatusStrip,即狀態欄控件,是由System.Windows.Forms. StatusStrip類提供的,主要用於在應用程序中顯示用戶狀態的簡單信息,一般位於Windows窗體的底部。
表4 StatusStrip控件的常用屬性和事件
類別 |
名稱 |
用途 |
屬性 |
Name |
指示代碼中用來標識該對象的名稱 |
Text |
顯示的文本 |
|
Items |
顯示項的集合 |
|
事件 |
ItemClicked |
當單擊項時發生 |
在狀態欄中可以使用文字或圖標顯示應用程序的狀態,也可以用一系列圖標組成動畫來表示正在進行某個過程。
可爲狀態欄添加的窗格控件有:StatusLabel、ProgessBar、DropDownButton、SplitButton等;
表5 窗格控件意義
名稱 |
說明 |
StatusLabel |
表示StatusStrip控件中的一個面板 |
ProgessBar |
顯示進程的完成狀態 |
DropDownButton |
顯示用戶可以從中選擇單個項關聯的選項 |
SplitButton |
表示作爲標準按鈕和下拉菜單的一個組合控件 |
StatusStrip控件 代碼實例
需求:設計一個窗體,在狀態欄中顯示當前時間。
設計:
運行結果和代碼:
5. 進度條控件
ProgressBar,即進度條控件,是由System.Windows.Forms.ProgressBar類提供的,主要用於表示進度。ProgressBar控件
表6 ProgressBar控件的常用屬性和事件
類別 |
名稱 |
用途 |
屬性 |
Name |
指示代碼中用來標識該對象的名稱 |
Value |
進度條的當前值 |
|
Minimum |
進度條的範圍下限 |
|
Maximum |
進度條的範圍上限 |
|
事件 |
Click |
單擊事件 |
ProgressBar控件 代碼實例
需求:設計一個進度條窗體,程序運行時,顯示進度,當進度值達到100時,提示“下載完畢!”。
設計:
運行結果和代碼: