C# 《WinForm程序設計與實踐》 4.2 WinForm常用控件

 

 

參考、資源等見單章: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:

https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.richtextbox.loadfile?view=netframework-4.8

 

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 FrameworkWindows窗體提供了豐富的選擇類控制,選擇類控件包括單選按鈕控件(RadioButton)、複選框控件(CheckBox)、列表框控件(ListBox)以及下拉框控件(ComBox)等。

 

  1. 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種可能:CheckedUncheckedIndeterminage

事件

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());

        }

 

  1. GroupBox控件

分組框控件,由System.Windows.Forms. GroupBox類提供,主要用於爲其它控件提供可識別的分組。在窗體設計時,通常按功能把窗體劃分爲若干個區域,每個區域使用一個GroupBox控件表示。例如,把相關的各選項放入一個分組框,就可以爲用戶提供一個統一的外觀或邏輯處理。

表2 GroupBox控件的常用屬性和事件

類別

名稱

用途

屬性

Name

指示代碼中用來標識該對象的名稱

Text

顯示的文本

事件

Enter

在控件成爲該窗體的活動控件時發生

 

 

 

 

 

  1. 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時,提示“下載完畢!”。

設計:

 

 

 

 

 

運行結果和代碼:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章