国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Windows窗體學(xué)這一篇就夠了(C#控件講解)

這篇具有很好參考價值的文章主要介紹了Windows窗體學(xué)這一篇就夠了(C#控件講解)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

目錄

一、Form窗體

1.1窗體的創(chuàng)建和刪除

1、添加窗體

2、刪除窗體

3、多窗體的使用

1.2、窗體屬性

1.2.1更換窗體圖標(biāo)

1.2.2隱藏窗體的標(biāo)題欄(FormBorderStyle屬性)

1.2.3控制窗體的顯示位置(StartPosition屬性)

1.2.4窗體背景圖片的設(shè)置

1.2.5窗體的顯示與隱藏

1.3窗體的事件

1.3.1單擊事件(Click)

?1.3.2加載事件(Load)

1.3.3關(guān)閉事件(FormClosing)

補(bǔ)、為何關(guān)閉了窗口了但下次啟動時卻顯示還在運(yùn)行

?二、MDI窗體

?2.1設(shè)置MDI窗體

2.1.1設(shè)置父窗體

2.1.2設(shè)置子窗體

2.2排列MDI子窗體

三、窗體控件

1.1控件的概述

1.2控件的相關(guān)操作

2.1文本控件

2.1.1Label控件

2.1.2Button控件

2.1.3TextBox控件

2.1.4RichTextBox控件

超鏈接樣式

richTextBox文本框設(shè)置

3.1選擇類控件

3.1.1ComboBox控件

添加元素:分為手動和代碼添加。

設(shè)置下拉樣式(DropDownStyle)

3.1.2CheckBox控件

3.1.3RadioButton單選按鈕

1、判斷單選按鈕是否被選中

2、響應(yīng)單選按鈕選中狀態(tài)更改事件

3、單選按鈕分組

3.1.4NumericUpDown控件

1、最大值/最小值設(shè)置

2、獲取NumericUpDown控件中顯示的數(shù)值

3、設(shè)置NumericUpDown控件中數(shù)值的顯示方式

3.1.5ListBox控件

1、在ListBox控件中添加和移除項

2、創(chuàng)建總顯示滾動條的列表控件

3、在ListBox控件中選擇多項

4.1分組控件

4.1.1Panel控件

4.1.2GroupBox控件

?編輯

?4.1.3TabControl控件

1、選項卡圖片顯示樣式

2、鼠標(biāo)移入時彈出提示信息

?編輯

3、將選項卡顯示為按鈕樣式

?4、在選項卡中添加控件

5.1菜單、工具欄和狀態(tài)欄控件

5.1.1MenuStrip控件

5.1.2彈出式菜單(ContextMenuStrip)

5.1.3ToolStrip控件 (工具欄)

5.1.4StatusStrip控件(狀態(tài)欄)

6.1.1ImageList控件(圖片集)

1、ImageList控件代碼添加圖片

?2、在ImageList控件中通過代碼移除圖片

7.1PictureBox控件(圖片展示)

PictrueBox控件顯示圖片

8.1Timer控件(計時器)

1、Timer控件的常用屬性、方法和事件

?編輯?編輯

?2、計時器Timer實現(xiàn)時間改變

?9.1ListView控件(帶圖標(biāo)的選項列表)

1、在ListView控件中添加、移除項

1、添加項

2、移除項

2、默認(rèn)選擇控件中的某一項

3、為ListView控件中添加圖標(biāo)

?4、在控件中啟用平鋪視圖

5、為ListView控件中的項分組

?10.1TreeView控件(樹狀節(jié)點(diǎn))

10.1.1TreeView常用屬性和事件

10.1.2添加和刪除樹節(jié)點(diǎn)

1、添加樹節(jié)點(diǎn)

2、移除節(jié)點(diǎn)

10.1.3獲取TreeView控件中選中的節(jié)點(diǎn)

10.1.4為TreeView控件中的節(jié)點(diǎn)設(shè)置圖標(biāo)

11.1DateTimePicker控件 (日期時間框)

11.1.1使用DateTimePicker控件顯示時間

11.1.2自定義格式顯示日期

11.1.3獲取控件中選擇的日期

12.1MonthCalendar控件(日歷控件)

12.1.1MonthCalendar控件顯示周數(shù)

12.1.2在MonthCalendar控件中顯示多個月

?12.1.3在MonthCalendar控件中選擇日期范圍

13.1ErrorProvider控件(驗證文本框輸入)

1、驗證文本框

?13.2HelpProvider控件(調(diào)用幫助文檔)

13.3ProgressBar控件(進(jìn)度條)


一、Form窗體

From窗體也稱為窗口,是.NET框架的智能客戶技術(shù);

1.1窗體的創(chuàng)建和刪除

1、添加窗體

本窗體在Vs中創(chuàng)建可以右擊項目名---添加--Windows窗體。一般項目類型都是Windows窗體(.NET Framework)

2、刪除窗體

在對應(yīng)的窗體右擊,刪除即可

3、多窗體的使用

小白在第一次建立如圖多窗體時,在ctrl+F5運(yùn)行時只展示了一個窗體

c#窗口組件,windows,c#,microsoft

?那我們可以點(diǎn)擊Program.cs在下面添加Application.Run(new 窗體名稱());即可啟動其他窗體

c#窗口組件,windows,c#,microsoft

1.2、窗體屬性

1.2.1更換窗體圖標(biāo)

在屬性面板上選擇Icon屬性,即可更換圖標(biāo)。但圖片格式需要是ico。

1.2.2隱藏窗體的標(biāo)題欄(FormBorderStyle屬性)

FormBorderStyle屬性及說明
屬性值 說明 屬性值 說明
Fixed3D 固定的三位邊框 None 無邊框
FixedDialog 固定的對話框樣式 Sizable 可調(diào)整大小的邊框
FixedSingle 固定的單行邊框 SizableToolWindow 可調(diào)整大小的工具窗口邊框
FixedToolWindow 不可調(diào)整大小工具窗口邊框

1.2.3控制窗體的顯示位置(StartPosition屬性)

StartPosition屬性及說明
屬性值 說明
CenterParent 窗體在其父窗體居中
CenterScreen 窗體在當(dāng)前顯示窗口中居中,其尺寸在窗體大小中指定
Manual 窗體的位置有Location屬性確定
WindowsDefaultBounds 窗體定位在windows默認(rèn)位置,其邊界也由Windows默認(rèn)決定
WindowsDefaultLocation 窗體定位在windows默認(rèn)位置,其尺寸在窗體大小中指定

1.2.4窗體背景圖片的設(shè)置

通過設(shè)置BackgroundImage屬性可以設(shè)置背景,背景樣式的屬性則通過BackgroundImageLayout設(shè)置

BackgroundImageLayout屬性及說明
屬性值 說明
Tile(默認(rèn)) 背景圖片重復(fù)
None 背景圖片左邊顯示
None的同時RightToLeft屬性設(shè)置為Yes 背景圖片右邊顯示
Center 背景圖片居中顯示
Stretch 背景圖片拉申
Zoom 背景圖片按比例放大到合適大小

1.2.5窗體的顯示與隱藏

Form1 f=New Form1();//實例化對象
f.show(); //show()用于顯示
f.Hide(); //Hide()用于隱藏

1.3窗體的事件

1.3.1單擊事件(Click)

單擊窗體時,將會觸發(fā)的事件,如圖位置中查找該事件位置,雙擊進(jìn)去可設(shè)置事件代碼

c#窗口組件,windows,c#,microsoft

?1.3.2加載事件(Load)

窗體在加載時,將會觸發(fā)的事件,和上圖類似位置查找即可,進(jìn)入編輯也是雙擊

1.3.3關(guān)閉事件(FormClosing)

窗體在關(guān)閉時,將會觸發(fā)的事件,和上圖類似位置查找即可,進(jìn)入編輯也是雙擊

補(bǔ)、為何關(guān)閉了窗口了但下次啟動時卻顯示還在運(yùn)行

通過我個人情況,在我們使用多窗口,如在Form1窗口的單擊事件了加入了對Form2窗體的啟動,然后并對Form1窗體進(jìn)行了隱藏,為此在對Form2窗體進(jìn)行了X關(guān)閉,但其實Form1窗體卻還在后臺啟動。

出現(xiàn)了此問題解決方法:1、最直接的就是重啟電腦。2、同時按住Ctrl+shift+esc鍵打開資源管理器找到對應(yīng)進(jìn)程進(jìn)行關(guān)閉。

如何避免此問題:在Form2關(guān)閉事件里加入對Form1的關(guān)閉。通過Application.Exct();關(guān)閉所有窗口

c#窗口組件,windows,c#,microsoft

?二、MDI窗體

多文檔界面(multiple-document interface)簡稱MDI窗體。MDI窗體用于同時顯示多個文檔,每個文檔顯示在給自的窗口中。
以上時官方解釋,個人理解就是在父窗體中展示多個子窗體。

如下圖所示

c#窗口組件,windows,c#,microsoft

?2.1設(shè)置MDI窗體

在MDI窗體中,起容器作用的窗體稱為父窗體,可放在父窗體中的其他窗體稱為子窗體,也稱為MDI子窗體。

2.1.1設(shè)置父窗體

要將某個窗體設(shè)置為父窗體,只要在窗體屬性面板中將IsMdiContainer屬性設(shè)置為True即可。

2.1.2設(shè)置子窗體

設(shè)置完父窗體后,在父窗體的啟動事件中通過MdiParent屬性來確定子窗體。代碼案例如下
?

        private void Form1_Load(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2();
            frm2.Show();
            frm2.MdiParent = this; //展示在父窗口form1中,this表示本窗格
        }

2.2排列MDI子窗體

如果一個MDI窗體中有多個子窗體同時打開,假如不調(diào)整其排列順序,界面將會非?;靵y,不宜瀏覽。可通過MdiLayout枚舉進(jìn)行設(shè)置。

MdiLayout枚舉值
枚舉值 說明
ArrangeIcons 排列所有MDI子窗口圖標(biāo)
Cascade 所有MDI子窗口層疊排列
TileHorizontal 水平平鋪?zhàn)哟翱?/td>
TileVerttical 垂直平鋪窗口

案例代碼如下
?

LayoutMdi(MdiLayout.TileHorizontal);//水平平鋪
LayoutMdi(MdiLayout.TileVertical);//垂直排列

三、窗體控件

1.1控件的概述

常用控件包括文本控件、選擇控件、分組控件、菜單控件、工具欄控件以及狀態(tài)欄控件
?

常用控件的作用
控件分類 作用
文本控件 文本控件可以在控件上顯示文本
選擇控件 主要為用戶提供選擇的項目
分組控件 使用分組控件可以將窗體中的其他控件進(jìn)行分組處理
菜單控件 為系統(tǒng)制作功能菜單,將應(yīng)用程序命令分組,使它們更容易訪問
工具欄控件 提供了主菜單中常用的相關(guān)工具
狀態(tài)欄控件 用于顯示窗體上的對象的相關(guān)信息,或者可以顯示應(yīng)用程序的信息

1.2控件的相關(guān)操作

在此添加和刪除控件我將不在敘述,我只說一個鎖定控件。完成鎖定窗體設(shè)置后,為了避免誤操作而改變窗體的控件設(shè)置,可通過鎖定控件對控件進(jìn)行定位。
在控件的屬性窗口中,單擊Locked屬性,并選擇為true即可鎖定控件

2.1文本控件

文本類控件主要包括Label控件(標(biāo)簽控件)、Button控件(按鈕控件)、TextBox控件(文本框控件)和RichTextBox控件(有格式文本控件)

2.1.1Label控件

a)概述:主要用于顯示用戶不能編輯的文本,也可以通過編寫代碼來設(shè)置要顯示的文本信息。

?c)顯示/隱藏控件:通過設(shè)置visible屬性(true為顯示\false為隱藏)

2.1.2Button控件

a)概述:允許用戶通過單機(jī)來執(zhí)行操作。既可以顯示文本,也可以顯示圖像。

b)響應(yīng)按鈕事的單擊事件:單擊button按鍵時引發(fā)click事件,執(zhí)行click事件中的代碼。

c)將按鈕設(shè)置為窗體"enter"按鈕:設(shè)置窗體的AcceptButton屬性,每次按enter鍵都相當(dāng)單擊此按鈕

this.AcceptButton=button1

d)將按鈕設(shè)置為"esc"按鈕:通過設(shè)置窗體的CancelButton屬性,每次按esc鍵都相當(dāng)單擊此按鈕??

this.cancelButton=button1

補(bǔ):如果想實現(xiàn)鼠標(biāo)移入和移出按鈕,改變按鈕的樣式或字體樣式,可以用OnMouseEnter(移入)和OnMouseLeave(移出)事件實現(xiàn)。

2.1.3TextBox控件

? a)概述:用于獲取用戶輸入的數(shù)據(jù)或顯示文本。文本框控件通常用于可編輯文本,也可使其成為只讀控件。文本框可以顯示多行,可以對文本換行使其符合控件的大小。

b)創(chuàng)建只讀文本框:通過設(shè)置ReadOnly屬性,就可以設(shè)置文本框是否為只讀。(代碼修改在文件夾)

        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.ReadOnly = true;   //將文本設(shè)置為只讀
            textBox1.Text = "你好世界";
        }

c)創(chuàng)建密碼文本框:通過設(shè)置PasswordChar(顯示符號可以自行定義)或者UseSystremPasswordChar(顯示為'大黑點(diǎn)')

        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.PasswordChar = '#';    //設(shè)置文本框的密碼字符為@
            textBox1.UseSystemPasswordChar = true;   //此密碼字符為大黑點(diǎn)
        }

d)創(chuàng)建多行文本框:通過設(shè)置Multiline屬性(true打開,false為關(guān)閉)

        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.Multiline = true;    //使其顯示多行
            textBox1.Height = 20;         //設(shè)置文本框的行高
        }

e)突出顯示文本:通過設(shè)置SelectionStart(起始索引)和SelectionLength(字符長度)屬性設(shè)置凸顯文本(簡而言之就是選中狀態(tài))

        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.Multiline = true;    //使其顯示多行
            textBox1.SelectionStart = 0;  //其實索引
            textBox1.SelectionLength = 5; //字符長度
            textBox1.Height = 20;         //設(shè)置文本框的行高
        }

f)響應(yīng)式文本框的文本更改事件:當(dāng)文本框中的文本發(fā)生更改時,將會引發(fā)文本框的TextChanged事件。如Label1.Text=textBox1.Text;Label顯示的和TextBox內(nèi)容一致

2.1.4RichTextBox控件

?概述:控件用于顯示、輸入和操作帶有格式的文本。除了執(zhí)行TextBox控件的所有功能之外,還可以顯示字體、顏色和鏈接,從文件加載文本和嵌入的圖像,撤銷和重復(fù)編輯操作以及查找指定的字符。

a)在RichTextBox控件中顯示滾動條:設(shè)置Multiline屬性true為顯示滾動條false為不顯示。默認(rèn)為True;滾動條分為水平滾動條和垂直滾動條,通過設(shè)置ScrollBars屬性,其屬性值有以下幾種。

屬性值 說明

Both

只有當(dāng)文本超出寬度或長度時,才顯示水平或垂直滾動條,或兩個滾動條都顯示.

None

從不顯示任何類型的滾動條

Horizontal

只有當(dāng)文本超出控件的寬度時,才顯示水平滾動條。必須將WordWrap屬性設(shè)置為false,才會出現(xiàn)這種情況

Vertical

只有當(dāng)文本超過控件高度時,才顯示垂直滾動條

ForcedHorizontal

當(dāng)wordWrap屬性設(shè)置為false時,才顯示水平滾動條。在文本未超過控件長度時,滾動條顯示為淺灰色

ForcedVertical

始終顯示垂直滾動條。在文本為超過長度時,滾動條為淺灰色

ForcedBoth

始終顯示垂直滾動條。當(dāng)WordWrap屬性設(shè)置為false時,顯示水平滾動條。在文本為超過控件的寬度或長度時,兩個滾動條均顯示為灰色。

超鏈接樣式

           //在窗體啟動時richTextBox1生成一個文本

        private void 超鏈接樣式_Load(object sender, EventArgs e)
        {
            richTextBox1.Text = "百度 http://baidu.com";
        }




            //在LinkClicked事件中對網(wǎng)址進(jìn)行樣式改變
        private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)
        {
            //實現(xiàn)內(nèi)容中的網(wǎng)址帶下劃線
            System.Diagnostics.Process.Start(e.LinkText);

        }

richTextBox文本框設(shè)置

private void Form1_Load(object sender, EventArgs e)
        {
            richTextBox1.Multiline = true;
            richTextBox2.Multiline = true;
            richTextBox3.Multiline = true;
            richTextBox4.Multiline = true;
            richTextBox5.Multiline = true;
            richTextBox6.Multiline = true;
            richTextBox7.Multiline = true;


            ///設(shè)置scrollbars屬性,實現(xiàn)垂直水平滾動條。
            richTextBox1.ScrollBars = RichTextBoxScrollBars.Both; //只要超過才會顯示


            richTextBox2.ScrollBars = RichTextBoxScrollBars.None; //從不顯示


            richTextBox3.ScrollBars = RichTextBoxScrollBars.Horizontal;//超過并且WORDwrap為false才會顯示水平滾動條


            richTextBox4.ScrollBars = RichTextBoxScrollBars.Vertical;//只有達(dá)到高度才會顯示垂直滾動條


            richTextBox5.ScrollBars = RichTextBoxScrollBars.ForcedHorizontal;//超過并且WORDwrap為false才會顯示水平滾動條,未達(dá)到為灰色


            richTextBox6.ScrollBars = RichTextBoxScrollBars.ForcedVertical;//始終顯示垂直滾動條,未達(dá)到時為灰色


            richTextBox7.ScrollBars = RichTextBoxScrollBars.ForcedBoth;//始終顯示垂直滾動條,WORDwrap為false才會顯示水平滾動條。未達(dá)到時為灰色
        }

3.1選擇類控件

選擇類控件主要包括ComboBox控件(下拉框)、CheckBox控件(多選框)、RidioButton控件(單選按鈕)、NumericUpDown控件(數(shù)值選擇控件)和ListBox控件(列表控件)。

3.1.1ComboBox控件

ComboBox控件用于在下拉組合框中顯示數(shù)據(jù)。
ComboBox控件主要由兩部分組成:一個允許用戶輸入列表項的文本框,一個列表框。

添加元素:分為手動和代碼添加。

手動添加:
拖入ComboBox控件——選擇控件上的小三角——編輯項
        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.Items.Add("電視");
            comboBox1.Items.Add("電腦");
            comboBox1.Items.Add("空調(diào)");
            comboBox1.Items.Add("手表");
        }

設(shè)置下拉樣式(DropDownStyle)

DropDownStyle屬性說明
屬性值 說明
Simple 使用下拉列表部分總是可見
DropDown(默認(rèn)值) 使用戶可以編輯控件的文本框部分,單擊箭頭才顯示
DropDownList 用戶不可編輯文本框部分,只能單擊箭頭選擇一項
//代碼參照格式
comboBox1.DropDownStyle= ComboBoxStyle.DropDownList;

當(dāng)comboBox1選中時comboBox2下拉框內(nèi)容隨之改變
selectedItem是獲取當(dāng)前選中項的內(nèi)容

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            comboBox2.Items.Clear();  //刪除所有下拉框的內(nèi)容

            //判斷comboBox1中的值對comboBox2中的值進(jìn)行改變
            if (comboBox1.SelectedItem=="電視") 
            {
                comboBox2.Items.Add("戴爾");
                comboBox2.Items.Add("聯(lián)想");
                comboBox2.Items.Add("華碩");
            }
            /*else if...*/
        }

3.1.2CheckBox控件

CheckBox控件用來表示是否選取了某個選項條件,常用于為用戶提供具有是/否或真/假值的選項。

判斷復(fù)選框是否選中/CheckedChanged事件進(jìn)行狀態(tài)更改響應(yīng)

通過在控件的Click事件中判斷CheckState屬性的返回值,得知復(fù)選框是否被選中。CheckState屬性的返回值有兩個值:Checked表示控件處于選中狀態(tài);Unchecked表示控件處于取消選中狀態(tài)

也可直接調(diào)用Checked判斷是否被選中,如果選擇則為True反之為false;

CheckedChanged事件進(jìn)行狀態(tài)更改響應(yīng):當(dāng)復(fù)選框控件狀態(tài)發(fā)生改變時則會觸發(fā)

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox1.Checked)  //checkBox1.CheckState==CheckState.Checked 同理
            {
                MessageBox.Show("選中");
            }
            else { MessageBox.Show("未選"); }
        }

3.1.3RadioButton單選按鈕

RadioButton控件為用戶提供兩個或多個互斥選項組成的選項集。當(dāng)用戶選中某單選按鈕時,一組中的其他單選按鈕不能同時選定。
單選按鈕必須在同一組中才能實現(xiàn)單選效果。

1、判斷單選按鈕是否被選中

可通過在控件的Click事件中判斷Checked屬性的返回值,可以判斷單選按鈕是否被選中。如果是選中狀態(tài)則為true,反之為false。
?

        private void radioButton1_Click(object sender, EventArgs e)
        {
            if (radioButton1.Checked)
            {
                MessageBox.Show("yes");
            }
            else { MessageBox.Show("no"); }
        }


//在窗體加載事件中可以設(shè)置默認(rèn)的選則單選按鈕
radioButton1.Checked=True;

2、響應(yīng)單選按鈕選中狀態(tài)更改事件

當(dāng)控件的選中狀態(tài)發(fā)生更改時,會引發(fā)控件的CheckedChanged事件

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            MessageBox.Show("單選按鈕狀態(tài)被修改");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            radioButton1.Checked = true;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            radioButton1.Checked=false;
        }

3、單選按鈕分組

在多個需要不同的單選按鈕的條件下,如果不進(jìn)行分組,那么在整個界面中就只能一次選中一個。在進(jìn)行不同的分組時即可在不同的組中進(jìn)行單選的判定。

可以用Panel控件即可進(jìn)行分組。它的使用就是將其拖著框住分組的單選按鈕。

3.1.4NumericUpDown控件

NumericUpDown控件是一個顯示和輸入數(shù)值的控件。如下圖所示
c#窗口組件,windows,c#,microsoft

1、最大值/最小值設(shè)置

該控件的Maximum屬性可以設(shè)置數(shù)值的最大值,如果輸入的數(shù)值大于這個屬性的值,程序?qū)⒆詣影褦?shù)值改為設(shè)置的最大值。Minimum屬性可以設(shè)置數(shù)值的最小值,該效果和最大值一致

2、獲取NumericUpDown控件中顯示的數(shù)值

?通過控件的Value屬性,可以獲取NumericUpDown空間中顯示的數(shù)值
?

        private void Form1_Load(object sender, EventArgs e)
        {
            numericUpDown1.Maximum = 100;
            numericUpDown1.Minimum = 0;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            label1.Text=numericUpDown1.Value.ToString();
        }

3、設(shè)置NumericUpDown控件中數(shù)值的顯示方式

DecimalPlaces屬性用于確定在小數(shù)點(diǎn)后顯示位數(shù),默認(rèn)為0
ThousandsSeparator屬性用于確定是否每隔3個十進(jìn)制數(shù)字就插入一個分隔符,默認(rèn)為false
Hexadecimal屬性設(shè)置為true則該控件可以用十六進(jìn)制顯示,默認(rèn)為false

注:DecimalPlaces屬性的值不能小于0,或大于99;否則會報錯。

        private void Form1_Load(object sender, EventArgs e)
        {
            numericUpDown1.Maximum = 100;
            numericUpDown1.Minimum = 0;
            numericUpDown1.DecimalPlaces = 1;
        }

3.1.5ListBox控件

ListBox控件用于顯示一個列表,用戶可以從中選擇一項或多項。如果選項總數(shù)超出可以顯示的項數(shù),則控件會自動添加滾動條。效果圖如下
c#窗口組件,windows,c#,microsoft
?

1、在ListBox控件中添加和移除項

通過ListBox控件的Items屬性的Add()方法和Remove()方法,可以向ListBox控件中添加和刪除項目。

        private void Form1_Load(object sender, EventArgs e)
        {
            listBox1.Items.Add("DNF");
            listBox1.Items.Add("消逝的光芒");
            listBox1.Items.Remove("英雄聯(lián)盟");
        }

2、創(chuàng)建總顯示滾動條的列表控件

通過設(shè)置控件的HorizontalScrollbar屬性ScrollAlwaysVisible屬性可以使控件總顯示滾動條。前者為水平滾動條后者為垂直滾動條

        private void Form1_Load(object sender, EventArgs e)
        {
                //添加元素
            listBox1.Items.Add("DNF");
            listBox1.Items.Add("消逝的光芒");
                //刪除元素
            listBox1.Items.Remove("英雄聯(lián)盟");
                //添加水平滾動條
            listBox1.HorizontalScrollbar = true;
                //添加垂直滾動條
            listBox1.ScrollAlwaysVisible = true;
        }

3、在ListBox控件中選擇多項

通過設(shè)置SelectionMode屬性,可以在控件中選擇多項。SelectionMode屬性時SelectionMode枚舉值之一,默認(rèn)為SelectionMode.One。

SelectionMode枚舉成員及說明
枚舉成員 說明
MultiExtended 可以選擇多項,并且用戶可使用Shift鍵、CTRL鍵和箭頭來選擇
MultiSimple 可以選擇多項
None 無法選擇項
One 只能選擇一項
        private void Form1_Load(object sender, EventArgs e)
        {
            listBox1.SelectionMode=SelectionMode.MultiExtended;
        }

4.1分組控件

4.1.1Panel控件

Panel控件用于為其他控件提供可識別的分組。該控件可以使窗體分類更詳細(xì),更便于理解,同時可依有滾動條。

        private void Form1_Load(object sender, EventArgs e)
        {
            panel1.Visible=false;       //隱藏控件
            richTextBox1.Text = " 對酒當(dāng)歌,人生幾何!\r\n\r\n譬如朝露,去日苦多。\r\n\r\n慨當(dāng)以慷,憂思難忘。\r\n\r\n何以解憂?唯有杜康。\r\n\r\n青青子衿,悠悠我心。\r\n\r\n但為君故,沉吟至今。\r\n\r\n呦呦鹿鳴,食野之蘋。\r\n\r\n我有嘉賓,鼓瑟吹笙。\r\n\r\n明明如月,何時可掇?\r\n\r\n憂從中來,不可斷絕。\r\n\r\n越陌度阡,枉用相存。\r\n\r\n契闊談讌,心念舊恩。\r\n\r\n月明星稀,烏鵲南飛。\r\n\r\n繞樹三匝,何枝可依?\r\n\r\n山不厭高,海不厭深。\r\n\r\n周公吐哺,天下歸心。 ";

        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "")
            {
                MessageBox.Show("請輸入內(nèi)容");
                textBox1.Focus();       //將光標(biāo)定位到此控件內(nèi)
            }
            else
            {
                panel1.Visible = true;
            }
        }

?效果展示

c#窗口組件,windows,c#,microsoft

補(bǔ)充:如果將Panel控件的Enabled屬性(設(shè)置控件是否可以對用戶交互做出響應(yīng))設(shè)置為false,那么該容器中的所有控件將被設(shè)置為不可用狀態(tài)

4.1.2GroupBox控件

GroupBox控件主要為其他控件提供分組,按照控件的分組來細(xì)分窗體的功能。
其在所包含的控件集周圍總是顯示邊框,并且可以顯示標(biāo)題,但是GroupBox控件沒有滾動條。

c#窗口組件,windows,c#,microsoft

?4.1.3TabControl控件

TabControl控件用來添加多個選項卡,并可在選項卡上添加子控件。這樣就可以把窗體設(shè)計成多頁,使窗體功能劃分為多個部分
選項卡中可以包含圖片或其他控件。選項卡控件還可以用來創(chuàng)建用于設(shè)置一組相關(guān)的屬性的屬性頁

c#窗口組件,windows,c#,microsoft

TabControl控件包含選項卡頁,TabPage控件表示選項卡。
TabControl控件的TabPages屬性表示其中所有TabPage控件的集合。

Tabpages集合中TabPage選項卡的順序反映了TabControl控件中選項卡的順序

1、選項卡圖片顯示樣式

通過TabControl控件和組成控件上各選項卡的TabPage對象屬性,可更改Windows窗體中選項卡的外觀。
如將TabControl控件的ImgeList屬性設(shè)置為ImgeList控件,配合TabPange中ImageIndex屬性對選項卡進(jìn)行圖片設(shè)置。
?

        private void Form1_Load(object sender, EventArgs e)
        {
            //設(shè)置控件的ImageList屬性為ImageList1控件
            tabControl1.ImageList = imageList1;
            //將選項卡的圖標(biāo)和ImageList1圖片位置索引進(jìn)行對接。
            tabPage1.ImageIndex = 0;
            tabPage2.ImageIndex= 0;
            //設(shè)置選項卡顯示的文本,設(shè)置其Text屬性
            tabPage1.Text = "選項卡1";
            tabPage2.Text = "選項卡2";
        }

c#窗口組件,windows,c#,microsoft

2、鼠標(biāo)移入時彈出提示信息

將TabControl控件的ShowToolTips屬性設(shè)置為true;然后在tabPage選項卡的ToolTipText屬性中輸入相關(guān)的提示信息即可。

        private void Form1_Load(object sender, EventArgs e)
        {
            //設(shè)置控件的ImageList屬性為ImageList1控件
            tabControl1.ImageList = imageList1;
            //設(shè)置選項卡顯示的文本,設(shè)置其Text屬性
            tabPage1.Text = "選項卡1";
            tabPage2.Text = "選項卡2";
            tabControl1.ShowToolTips = true;
            //鼠標(biāo)移入選項卡彈出提示
            tabPage2.ToolTipText = "這是選項卡2";
        }

c#窗口組件,windows,c#,microsoft

3、將選項卡顯示為按鈕樣式

只需要將TabConTrol控件的Appearance屬性設(shè)置為Button或FlatButtons,即可設(shè)置!
?

        private void Form1_Load(object sender, EventArgs e)
        {
            //設(shè)置控件的ImageList屬性為ImageList1控件
            tabControl1.ImageList = imageList1;
            //設(shè)置選項卡顯示的文本,設(shè)置其Text屬性
            tabPage1.Text = "選項卡1";
            tabPage2.Text = "選項卡2";
                //設(shè)置為按鈕樣式
            tabControl1.Appearance = TabAppearance.Buttons;
        }

c#窗口組件,windows,c#,microsoft

?4、在選項卡中添加控件

通過tabPage選項卡的Controls屬性的Add()方法,向選項中添加一個控件。也可直接將控件拖進(jìn)去

        private void Form1_Load(object sender, EventArgs e)
        {
            //設(shè)置控件的ImageList屬性為ImageList1控件
            tabControl1.ImageList = imageList1;
            //設(shè)置選項卡顯示的文本,設(shè)置其Text屬性
            tabPage1.Text = "選項卡1";
            tabPage2.Text = "選項卡2";


            Button bt1 = new Button();
            bt1.Text = "按鈕1";


            tabPage1.Controls.Add(bt1);
        }

5.1菜單、工具欄和狀態(tài)欄控件

菜單時窗體應(yīng)用程序主要的用戶界面要素,工具欄為應(yīng)用提供了操作系統(tǒng)的界面,狀態(tài)欄顯示系統(tǒng)的一些狀態(tài)信息。

5.1.1MenuStrip控件

MenuStrip控件是程序的主菜單。MenuStrip控件取代了先前版本的MainMenu控件,支持多文檔界面、菜單合并、工具提示和溢出。
程序員可通過添加訪問鍵、快捷鍵、選中標(biāo)記、圖像和分割條來增強(qiáng)菜單的可用性和可讀性。

快捷鍵只需要在后面加個(&鍵位),使用ALT+鍵位即可使用

c#窗口組件,windows,c#,microsoft

5.1.2彈出式菜單(ContextMenuStrip)

彈出式菜單也成為“右鍵快捷菜單”,在點(diǎn)擊右鍵時彈出,其位置是由鼠標(biāo)點(diǎn)擊的位置來確定的。

c#窗口組件,windows,c#,microsoft

5.1.3ToolStrip控件 (工具欄)

ToolStrip控件是.NET框架3.5以上增加的新控件。工具欄其實就是相當(dāng)于工廠每個人的工具箱。

工具欄的下來菜單中有八中不同的類型

工具欄菜單類型及說明
類型 說明
Button 包含文本和圖像中可讓用戶選擇的項
Label 包含文本和圖像的項,不可以讓用戶選擇,可以顯示超鏈接。
SplitButton 在Button的基礎(chǔ)上增加了一個下來菜單
DropDowmButton 用于下拉菜單選擇項
Separator 分隔符
ComboBox 顯示一個下拉框
TextBox 顯示一個文本框
ProgressBar 顯示一個進(jìn)度條

5.1.4StatusStrip控件(狀態(tài)欄)

StatusStrip控件通常處于窗體發(fā)的最底部,用于顯示窗體上對象的相關(guān)信息,或者可以顯示應(yīng)用程序的信息。
?

常用組合控件及說明
控件名 說明
StatusLabel 用于顯示文本
ProgressBar 用于顯示進(jìn)度條
DropDowmButton 用于下拉菜單選擇項
SplitButton 在Button的基礎(chǔ)上增加了一個下來菜單
        private void Form1_Load(object sender, EventArgs e)
        {
            //在任務(wù)欄上顯示日期
            toolStripStatusLabel1.Text = DateTime.Now.ToString();
            //進(jìn)度條最大值與最小值設(shè)置
            toolStripProgressBar1.Minimum = 0;
            toolStripProgressBar1.Maximum = 100;

            toolStripProgressBar1.Step = 2;             //進(jìn)度條的增值
            for (int i = 0; i < 100; i++)
            {
                toolStripProgressBar1.PerformStep();  //按照Step屬性的數(shù)量增加進(jìn)度欄的當(dāng)前位置
            }
        }

6.1.1ImageList控件(圖片集)

ImageList控件用于存儲圖像資源,并在控件上顯示出來,這樣就簡化了對圖像的管理。
ImageList控件實際上相當(dāng)于一個圖片集。在如pictureBox控件中展示對應(yīng)的圖片,且圖片在ImageList控件中也是用索引來判斷位置。

c#窗口組件,windows,c#,microsoft

?一般ImageList控件都是與pictureBox控件結(jié)合出現(xiàn),并且ImageList控件并不會在窗體中展示,他只是一個用于存放圖片的容器。
圖片可以手動放入和移除也可以通過代碼加入和移除;

1、ImageList控件代碼添加圖片

通過ImageList控件的Images屬性的Add()方法向控件中添加圖像

        private void Form1_Load(object sender, EventArgs e)
        {
                //獲取圖片路徑
            string a = "C:\\Users\\Promise\\Pictures\\4.jpg";
            Image b=Image.FromFile(a,true);
                //保存圖片
            imageList1.Images.Add(b);
                //在pictureBox中展示圖片,通過Images屬性獲取圖片索引位置
            pictureBox1.Image = imageList1.Images[0];
        }

c#窗口組件,windows,c#,microsoft

?2、在ImageList控件中通過代碼移除圖片

在ImageList控件中,RemoveAt()方法可以移除單個圖像,使用Clear()方法可以移除所有圖像。

        private void button1_Click(object sender, EventArgs e)
        {
            if (imageList1.Images.Count==0) //判斷imagelist中是否存在圖片
            {
                MessageBox.Show("沒有圖片");
            }
            else
            {
                imageList1.Images.RemoveAt(0);
                //RemoveAt(圖片索引位置);
            }
        }

7.1PictureBox控件(圖片展示)

PictureBox控件是用于顯示圖像在Windows窗體控件,通常用于在窗體的指定位置顯示圖片,它可手動添加圖片,也可代碼添加,并且多與ImageList控件結(jié)合出現(xiàn)。

PictureBox的常用屬性
屬性 說明
Image 用于設(shè)置顯示在圖片框控件上的圖像
ImageLocation 用于設(shè)置在圖片框控件上的圖像路徑
SizeMode 用于控制調(diào)整控件或圖片的大小及放置位置
SizeMode的屬性值
屬性值 說明
Normal 圖像被放置于空間的左上角,如果圖片大于控件大小則超出部分被裁剪掉。
StretchImage 控件中的圖像被拉伸或收縮,用于適應(yīng)控件的大小
AutoSize 調(diào)整控件的大小,使其等于所包含的圖像大小
CenterImage 如果圖片小于空間,則居中顯示,反之多出部分被裁剪。
Zoom 圖像大小按其原有的長寬比例等比例方法或縮小

PictrueBox控件顯示圖片

        private void Form1_Load(object sender, EventArgs e)
        {
            //pictureBox1.Image = Image.FromFile("C:\\Users\\Promise\\Pictures\\9.jpg");
            //兩者效果一致
            pictureBox1.ImageLocation = "C:\\Users\\Promise\\Pictures\\9.jpg";
        }

其區(qū)別在于Image屬性是圖像對象,而ImageLocation屬性是圖像路徑,是文本型。

8.1Timer控件(計時器)

計時器Timer控件是指按用戶定義的時間間隔引發(fā)事件的控件,簡而言之程序每隔一段時間重復(fù)執(zhí)行一個操作。

1、Timer控件的常用屬性、方法和事件

Timer控件的常用屬性、方法和事件
屬性 說明
Interval 事件發(fā)送的間隔(頻率),以毫秒為單位
Enable 設(shè)置計時器是否啟用,布爾類型。
方法 說明
Start() 啟動計時器
Stop() 停止計時器
事件 說明
Tick 定時間隔到自動引發(fā)的事件

c#窗口組件,windows,c#,microsoftc#窗口組件,windows,c#,microsoft

?2、計時器Timer實現(xiàn)時間改變

創(chuàng)建一個Label控件獲取當(dāng)前時間DateTime.Now.ToString()。再通過Timer實現(xiàn)刷新時間獲取

        private void Form1_Load(object sender, EventArgs e)
        {
            label1.Text = DateTime.Now.ToString(); //獲取當(dāng)前時間
            timer1.Enabled = true;            //啟動Timer
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Text= DateTime.Now.ToString(); //根據(jù)設(shè)置的時間間隔刷新時間
        }

c#窗口組件,windows,c#,microsoft

?9.1ListView控件(帶圖標(biāo)的選項列表)

?ListView控件用于顯示帶圖標(biāo)的選項列表,可以顯示大圖標(biāo)、小圖標(biāo)和數(shù)據(jù)。使用ListView控件可以創(chuàng)建類似Windows資源管理器右窗口的用戶界面。

通過View屬性可設(shè)置控件中顯示的方法

View屬性及說明
屬性值 說明
Details 每個項顯示在不同的行上,并帶有關(guān)于列中所排列的各項的進(jìn)一步信息。最左邊的列包含一個小圖標(biāo)和標(biāo)簽,后面的列包含應(yīng)用程序指定的子項。列顯示一個標(biāo)頭,它可以顯示列的標(biāo)題。用戶可以在運(yùn)行時調(diào)整各列大小。
LargeIcon 每個項都顯示為一個最大的圖標(biāo),在它的下面有一個標(biāo)簽。這是默認(rèn)的視圖模式
List 每個項都顯示為一個小圖標(biāo),在它右邊帶一個標(biāo)簽,各項排列在列中,沒有列標(biāo)頭
SmaLLIcon 每個項顯示為一個小圖標(biāo),在他右邊帶一個標(biāo)簽
Tile 每個項都顯示為一個完整大小的圖標(biāo),在它的右邊帶項標(biāo)簽和子項信息。顯示的子項信息由應(yīng)用程序指定。

1、在ListView控件中添加、移除項

1、添加項

可以使用控件Items屬性的Add()方法向控件中添加項。

        private void Form1_Load(object sender, EventArgs e)
        {
            listView1.Items.Add("穿越火線");
            listView1.Items.Add("英雄聯(lián)盟");
            listView1.Items.Add("CS·GO");
            listView1.Items.Add("消逝的光芒");
        }

c#窗口組件,windows,c#,microsoft

?在控件中添加完項目后,可以用CheckBoxes屬性顯示復(fù)選框,以便用戶可以選中要對其執(zhí)行操作的項

2、移除項

通過控件中Items屬性的ReMoveAt()或Clear()方法可以移除控件中的項。

        private void button1_Click(object sender, EventArgs e)
        {
            listView1.Items.RemoveAt(listView1.Items.Count - 1); //移除其中最后一項
            listView1.Items.RemoveAt(listView1.SelectedItems[0].Index); //移除選定的項
        }

c#窗口組件,windows,c#,microsoft

?在刪除控件中的項目前,必須對項目的個數(shù)進(jìn)行判斷。如果為0,則不進(jìn)行項目的刪除;否則會觸發(fā)異常。

2、默認(rèn)選擇控件中的某一項

可以通過控件的Selected屬性設(shè)置控件中的選擇項。

        private void Form1_Load(object sender, EventArgs e)
        {
            listView1.Items.Add("穿越火線");
            listView1.Items.Add("英雄聯(lián)盟");
            listView1.Items.Add("CS·GO");
            listView1.Items.Add("消逝的光芒");
            listView1.Items[3].Selected=true; //默認(rèn)選擇
                //Items[索引位置]
        }

c#窗口組件,windows,c#,microsoft

3、為ListView控件中添加圖標(biāo)

需要結(jié)合ImageList控件來設(shè)置其圖標(biāo)。并結(jié)合控件的LargeImageList屬性。

        private void Form1_Load(object sender, EventArgs e)
        {
            listView1.LargeImageList = imageList1;   //設(shè)置控件LargeImageList屬性
            listView1.Items.Add("穿越火線");
            listView1.Items.Add("英雄聯(lián)盟");
            listView1.Items.Add("CS·GO");
            listView1.Items.Add("消逝的光芒");
            listView1.Items[0].ImageIndex= 0;       //給指定索引項獲取指定索引位置的圖片
            listView1.Items[1].ImageIndex= 1;

           // Items[項目索引].ImageIndex=圖片索引;
        }

c#窗口組件,windows,c#,microsoft

?4、在控件中啟用平鋪視圖

使用平鋪功能可以在圖形信息和文本信息之間提供一種視覺平衡。
如果要使用平鋪視圖,需要將View屬性設(shè)置為Tile,可以通過設(shè)置TileSize屬性來調(diào)整平鋪大小。

        private void Form1_Load(object sender, EventArgs e)
        {
            listView1.View = View.Tile;
            listView1.LargeImageList = imageList1;   //設(shè)置控件LargeImageList屬性
            listView1.Items.Add("穿越火線");
            listView1.Items.Add("英雄聯(lián)盟");
            listView1.Items.Add("CS·GO");
            listView1.Items.Add("消逝的光芒");
            listView1.Items[0].ImageIndex= 0;       //給指定索引項獲取指定索引位置的圖片
            listView1.Items[1].ImageIndex = 1;
            listView1.TileSize = new Size(500, 3); //設(shè)置控件平鋪大小,(長,高)
        }

c#窗口組件,windows,c#,microsoft

5、為ListView控件中的項分組

可以使用ListView組按字母順序、日期或任何其他邏輯組合對項進(jìn)行分組,從而簡化大型列表的導(dǎo)航。
若要啟用分組,首先必須在設(shè)計器中或以編程方式房間一個或多個組。

        private void Form1_Load(object sender, EventArgs e)
        {
            //創(chuàng)建兩個組
            listView1.Groups.Add(new ListViewGroup("FPS",HorizontalAlignment.Left));
            listView1.Groups.Add(new ListViewGroup("5v5", HorizontalAlignment.Left));
            //添加項
            listView1.Items.Add("穿越火線");
            listView1.Items.Add("英雄聯(lián)盟");
            listView1.Items.Add("CS·GO");
            listView1.Items.Add("消逝的光芒");
            //將項分配給組
            listView1.Items[0].Group = listView1.Groups[0];
            listView1.Items[2].Group = listView1.Groups[0];
            listView1.Items[3].Group = listView1.Groups[0];
            listView1.Items[1].Group = listView1.Groups[1];
        }

c#窗口組件,windows,c#,microsoft

?如果想臨時禁用分組功能,可以將ShowGroups屬性設(shè)置為False

?10.1TreeView控件(樹狀節(jié)點(diǎn))

TreeView控件可以為用戶顯示節(jié)點(diǎn)層次結(jié)構(gòu),每個節(jié)點(diǎn)又可以包含子節(jié)點(diǎn),包含子節(jié)點(diǎn)的節(jié)點(diǎn)叫做父節(jié)點(diǎn)。

10.1.1TreeView常用屬性和事件

TreeView常用屬性和事件及說明
屬性 說明
Name 獲取或設(shè)置控件名稱
Nodes 控件根節(jié)點(diǎn)集合
SelectedNode 獲取或設(shè)置當(dāng)前控件中選定的根節(jié)點(diǎn)
ImageList 獲取或設(shè)置控件中搜使用的圖像集,關(guān)聯(lián)ImageList控件
ImageIndex 獲取或設(shè)置樹節(jié)點(diǎn)顯示的圖像,在ImageList圖像集中的索引
SelectedImageIndex 獲取或設(shè)置節(jié)點(diǎn)被選中時顯示的圖像,在ImageList圖像集中的索引
方法 說明
AfterCollapse 在折疊樹節(jié)點(diǎn)后觸發(fā)
AfterExpand 在展開樹節(jié)點(diǎn)后觸發(fā)
AfterSelect 在更改選中節(jié)點(diǎn)后觸發(fā)
Click 在單擊控件時觸發(fā)

10.1.2添加和刪除樹節(jié)點(diǎn)

1、添加樹節(jié)點(diǎn)

使用Nodes屬性的Add()方法,可以向控件中添加節(jié)點(diǎn)。

        private void Form1_Load(object sender, EventArgs e)
        {
            TreeNode tn1 = treeView1.Nodes.Add("商品");  //父節(jié)點(diǎn)
            TreeNode tn2 = new TreeNode("商品名");  //二級節(jié)點(diǎn)
            TreeNode tn3 = new TreeNode("可樂");   //三級節(jié)點(diǎn)
            tn1.Nodes.Add(tn2); //將二級節(jié)點(diǎn)放到父節(jié)點(diǎn)中
            tn2.Nodes.Add(tn3); //將三級節(jié)點(diǎn)放到二級節(jié)點(diǎn)中
            tn3.Nodes.Add("18元");  //在三級節(jié)點(diǎn)下新建一個四級節(jié)點(diǎn)
        }

c#窗口組件,windows,c#,microsoft

?注:在上一級節(jié)點(diǎn)下新建一個節(jié)點(diǎn),并且此節(jié)點(diǎn)下還要包含另個一節(jié)點(diǎn)則需要將其賦值給一個變量。

2、移除節(jié)點(diǎn)

使用Nodes屬性Remove()方法可以從樹節(jié)點(diǎn)集合中移除指定的樹節(jié)點(diǎn)。

        private void button1_Click(object sender, EventArgs e)
        {
            if (treeView1.SelectedNode.Text == "商品") //如果為根節(jié)點(diǎn)則提示
            {
                MessageBox.Show("請選擇要刪除的子節(jié)點(diǎn)");
            }
            else
            {
                treeView1.Nodes.Remove(treeView1.SelectedNode); //刪除選定的子節(jié)點(diǎn)
            }
        }

c#窗口組件,windows,c#,microsoft

10.1.3獲取TreeView控件中選中的節(jié)點(diǎn)

可以在控件的AfterSelect事件中,使用EventArgs對象返回對已單擊節(jié)點(diǎn)對象的引用。通過檢查TreeViewEventArg類(它包含與事件有關(guān)的數(shù)據(jù)),確定單機(jī)了那個節(jié)點(diǎn)

        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            string fill = e.Node.Text;
            MessageBox.Show("當(dāng)前選中節(jié)點(diǎn)是" + fill);
            /* 也可以是一下方法
             TreeNode selectedNode=this.treeView1.SelectedNode;
             MessageBox.Show(selectedNode.Text);
             */
            //兩者區(qū)別,前者是封裝好的,后者則是調(diào)用其方法獲取
        }

c#窗口組件,windows,c#,microsoft

?注:在BeforeCheck(在選中樹節(jié)點(diǎn)復(fù)選框前發(fā)生)或AfterCheck(再選中舒解帶你復(fù)選框后發(fā)生)在以上事件中盡可能不要使用TreeNode.Checked屬性。因為可能導(dǎo)致選中內(nèi)容不一致。

10.1.4為TreeView控件中的節(jié)點(diǎn)設(shè)置圖標(biāo)

該控件可在每個節(jié)點(diǎn)旁顯示圖標(biāo);圖標(biāo)緊挨著節(jié)點(diǎn)文本的左側(cè)。并且實現(xiàn)圖標(biāo)要結(jié)合ImageList圖片集控件能更好的實現(xiàn);代碼如下:

        private void Form1_Load(object sender, EventArgs e)
        {
            TreeNode tn1 = treeView1.Nodes.Add("商品");  //父節(jié)點(diǎn)
            TreeNode tn2 = new TreeNode("商品名");  //二級節(jié)點(diǎn)
            TreeNode tn3 = new TreeNode("可樂");   //三級節(jié)點(diǎn)
            tn1.Nodes.Add(tn2); //將二級節(jié)點(diǎn)放到父節(jié)點(diǎn)中
            tn2.Nodes.Add(tn3); //將三級節(jié)點(diǎn)放到二級節(jié)點(diǎn)中
            tn3.Nodes.Add("18元");  //在三級節(jié)點(diǎn)下新建一個四級節(jié)點(diǎn)

            treeView1.ImageList = imageList1;  //TreeView1控件ImageList屬性綁定指定的圖片集
            treeView1.ImageIndex = 0; //確定正常和展開狀態(tài)下的節(jié)點(diǎn)顯示的圖像
            treeView1.SelectedImageIndex = 1; //確定選定狀態(tài)下節(jié)點(diǎn)顯示的圖像
        }

c#窗口組件,windows,c#,microsoft

11.1DateTimePicker控件 (日期時間框)

DateTimePicker控件用于選擇日期和時間,DateTimePicker控件只能選擇一個時間,而不是連續(xù)的時間段,也可以直接輸入日期和時間。

11.1.1使用DateTimePicker控件顯示時間

通過將控件的Format屬性設(shè)置為Time,實現(xiàn)控件只顯示時間。
Format屬性用于獲取或設(shè)置控件中顯示的日期和時間格式。

DateTimePickerFormat枚舉值及說明
枚舉值 說明
Custom DateTimePicker控件以自定義格式顯示日期和時間
Long DateTimePicker控件以用戶操作系統(tǒng)設(shè)置的長日期格式顯示日期和時間
Short DateTimePicker控件以用戶操作系統(tǒng)設(shè)置的段日期格式顯示日期和時間
Time DateTimePicker控件以用戶操作系統(tǒng)設(shè)置的時間格式顯示日期和時間
        private void Form1_Load(object sender, EventArgs e)
        {
            dateTimePicker1.Format = DateTimePickerFormat.Time;
            label1.Text = dateTimePicker1.Text;
        }

c#窗口組件,windows,c#,microsoft

補(bǔ):如果想在該控件內(nèi)用按鈕調(diào)整時間值,需要將ShowUpDown屬性設(shè)置為true。

11.1.2自定義格式顯示日期

通過設(shè)置DateTimePicker控件的CustomFormat屬性,可自定義日期時間格式字符串。

注意:Format屬性必須設(shè)置為DateTimePickerFormat.Custom,才能影響顯示日期和時間的格式

        private void Form1_Load(object sender, EventArgs e)
        {
            dateTimePicker1.Format = DateTimePickerFormat.Custom;
            dateTimePicker1.CustomFormat = "MMMM dd,yyyy - dddd";
            label1.Text = dateTimePicker1.Text;
        }

c#窗口組件,windows,c#,microsoft

11.1.3獲取控件中選擇的日期

調(diào)用控件的Text屬性以返回與控件中的格式相同的完整值,或調(diào)用Value屬性的適當(dāng)方法來返回部分值。

這些方法包括Year、Month和Day等,使用ToString將信息轉(zhuǎn)換成可現(xiàn)實給用戶的字符串

        private void Form1_Load(object sender, EventArgs e)
        {
            label1.Text = dateTimePicker1.Text;
            label2.Text=dateTimePicker1.Value.Year.ToString();  //年
            label4.Text=dateTimePicker1.Value.Month.ToString(); //月
            label6.Text=dateTimePicker1.Value.Day.ToString();   //日
        }

c#窗口組件,windows,c#,microsoft

補(bǔ):如果想要直接獲取當(dāng)前系統(tǒng)的日期和時間,可以使用Value屬性下的ToShortDateString()和ToShortTimeString()方法。

12.1MonthCalendar控件(日歷控件)

MonthCalendar控件提供了一個直觀的圖形化界面,可以讓用戶查看和設(shè)置日期。并且用鼠標(biāo)拖拽可以選取一個連續(xù)的時間,包括起始時間和結(jié)束時間。

12.1.1MonthCalendar控件顯示周數(shù)

ShowWeekNumbers屬性設(shè)置為True,實現(xiàn)控件中顯示周數(shù),也可直接在屬性面板更改。

        private void Form1_Load(object sender, EventArgs e)
        {
            monthCalendar1.ShowWeekNumbers = true;
        }

c#窗口組件,windows,c#,microsoft

12.1.2在MonthCalendar控件中顯示多個月

該控件最多可同時顯示12個月。默認(rèn)為1個月,但可以通過設(shè)置CalendarDimensions屬性置頂顯示多少個月以及它們在空間中的排列方式。

注意:CalendarDimensions屬性一次只顯示一個日歷年,并且最多可顯示12個月。行和列的有效組合得到的最大乘積為12,對于大于12的值,將在最適合的基礎(chǔ)上修改顯示。

        private void Form1_Load(object sender, EventArgs e)
        {
            monthCalendar1.CalendarDimensions = new Size(12, 12);
        }

c#窗口組件,windows,c#,microsoft

?12.1.3在MonthCalendar控件中選擇日期范圍

如果在控件中選擇日期范圍,必須在Datechanged事件中設(shè)置SelectionStart和SelectionEnd屬性。這兩個屬性分別用于設(shè)置日期的其實和結(jié)束。

        private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
        {
            label1.Text = monthCalendar1.SelectionStart.ToString();
            label2.Text = monthCalendar1.SelectionEnd.ToString();
        }

c#窗口組件,windows,c#,microsoft

13.1ErrorProvider控件(驗證文本框輸入)

ErrorProvider控件可以在不打擾用戶的情況下向用戶顯示有錯誤發(fā)生。當(dāng)驗證用戶在窗體中的輸入或顯示數(shù)據(jù)集內(nèi)的錯誤時,一般要用到此控件。

ErrorProvider控件通過SetError()方法設(shè)置指定控件的錯誤描述字符串。

1、驗證文本框

此處用到textbox控件的Validating事件。此事件是在控件驗證時發(fā)生

        private void textBox1_Validating(object sender, CancelEventArgs e)
        {
            if (textBox1.Text == "")
            {
                errorProvider1.SetError(textBox1, "不可為空");
            }
        }

c#窗口組件,windows,c#,microsoft

?13.2HelpProvider控件(調(diào)用幫助文檔)

HelpProvider控件可以將幫助文件(.htm文件或.chm文件)與windows應(yīng)用程序相關(guān)聯(lián),為特定對話框或?qū)υ捒蛑械奶囟臻g提供區(qū)分上下文的幫助;可以打開幫助文件到特定部分,如目錄、索引或搜索功能的主頁。

通過這只控件的HelpNamespace屬性以及SetShowHelp()方法,實現(xiàn)當(dāng)按F1鍵時,打開指定的幫助文件。

        private void Form1_Load(object sender, EventArgs e)
        {
            string fill = "F:\\web代碼\\炫酷.html"; //獲取路勁
            helpProvider1.HelpNamespace = fill;     //設(shè)置控件的屬性
            helpProvider1.SetShowHelp(this, true);  //設(shè)置SetShowHelp()方法是否顯示指定控件的幫助信息
        }

c#窗口組件,windows,c#,microsoft

13.3ProgressBar控件(進(jìn)度條)

ProgressBar控件通過在水平放置的方框中顯示適當(dāng)數(shù)目的矩形,指示工作的進(jìn)度。

ProgressBar控件屬性及說明
屬性 說明
value 表示操作過程中已完成的進(jìn)度
Minimum 設(shè)置進(jìn)度條最小值
Maximum 設(shè)置進(jìn)度條最大值

注意:ProgressBar控件只能以水平方向顯示,如果想改變控件的顯示樣式,可以用ProgressBarRenderer類來實現(xiàn),如縱向進(jìn)度條或在進(jìn)度條上顯示文本。

        private void Form1_Load(object sender, EventArgs e)
        {
            progressBar1.Minimum = 0;  //最小值
            progressBar1.Maximum = 1000; //最大值
            progressBar1.Step = 100;  //遞增值,默認(rèn)為10
            for (int i = 0; i <= 1000; i++) //循環(huán)遞增
            {
                progressBar1.PerformStep(); //開始進(jìn)度條遞增
            }
        }

c#窗口組件,windows,c#,microsoft文章來源地址http://www.zghlxwxcb.cn/news/detail-679799.html

到了這里,關(guān)于Windows窗體學(xué)這一篇就夠了(C#控件講解)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 精通線程池,看這一篇就夠了

    精通線程池,看這一篇就夠了

    當(dāng)我們運(yùn)用多線程技術(shù)處理任務(wù)時,需要不斷通過new的方式創(chuàng)建線程,這樣頻繁創(chuàng)建和銷毀線程,會造成cpu消耗過多。那么有沒有什么辦法 避免頻繁創(chuàng)建線程 呢? 當(dāng)然有,和我們以前學(xué)習(xí)過多連接池技術(shù)類似,線程池通過提前創(chuàng)建好線程保存在線程池中, 在任務(wù)要執(zhí)行時取

    2023年04月17日
    瀏覽(97)
  • C語言結(jié)構(gòu)體(這一篇就夠了)

    目錄 一、結(jié)構(gòu)體變量 1.含義 2.一般形式: 3.結(jié)構(gòu)體類型變量的定義方法 4.結(jié)構(gòu)體的初始化 6.結(jié)構(gòu)體成員的訪問: 二、結(jié)構(gòu)體指針: 1.概念 2.定義 3.使用 三、結(jié)構(gòu)體數(shù)組: 1.概念 2.定義 3.使用 三、結(jié)構(gòu)體指針數(shù)組: 1.概念 2.定義 3.使用 是一種構(gòu)造數(shù)據(jù)類型 ,可以用于存儲多個 不

    2023年04月17日
    瀏覽(20)
  • ElasticSearch常見用法,看這一篇就夠了

    ElasticSearch常見用法,看這一篇就夠了

    2024送書福利正式起航 關(guān)注「哪吒編程」,提升Java技能 文末送3本《一本書講透Elasticsearch:原理、進(jìn)階與工程實踐》 大家好,我是哪吒。 ElasticSearch是一款由Java開發(fā)的開源搜索引擎,它以其出色的實時搜索、穩(wěn)定可靠、快速安裝和方便使用的特性,在Java開發(fā)社區(qū)中贏得了廣

    2024年03月19日
    瀏覽(94)
  • FastJson使用詳解這一篇就夠了

    第一章 FastJson使用詳解這一篇就夠了 第二章 FastJsonHttpMessageConverter 類的作用與使用詳解 第三章 Jackson 使用詳解 為什么使用fastJson,如何使用fastJson以及通用的配置和使用方式將在本文進(jìn)行詳細(xì)介紹。 FastJson是一種高性能的Java JSON解析庫,它采用類似于Jackson和Gson的JSON序列化和

    2024年02月12日
    瀏覽(86)
  • 超圖(HyperGraph)學(xué)習(xí),看這一篇就夠了

    超圖(HyperGraph)學(xué)習(xí),看這一篇就夠了

    最近事多,好久沒更新了,隨便寫寫(Ctrl+V)點(diǎn) 一、超圖定義 通常圖論中的圖,一條edge只能連接2個vertex,在超圖中,不限量 如何理解呢,就用我正在做的KT問題來看:7道題目-7個頂點(diǎn);4種概念-4條超邊,其中第1,2,3題都是考察概念1的,則構(gòu)建一個包含了這仨的超邊,以此類

    2024年02月02日
    瀏覽(27)
  • 學(xué)習(xí)C++這一篇就夠了(基礎(chǔ)篇)

    學(xué)習(xí)C++這一篇就夠了(基礎(chǔ)篇)

    在C++中如何使用C語言打包好的庫函數(shù) 空間分配原則是以“連續(xù)空閑”為核心的 運(yùn)行某個程序后,一定會向內(nèi)存申請空間 分配內(nèi)存時,內(nèi)存空間一定是連續(xù)的 分配出來的空間,是不確定位置的 單行注釋: //一行的注釋內(nèi)容 多行注釋:(模塊化注釋) /* 多行的注釋內(nèi)容 多行

    2024年02月12日
    瀏覽(30)
  • kafka入門用這一篇就夠了!

    kafka入門用這一篇就夠了!

    目錄 1,kafka簡單介紹 2,kafka使用場景 3,kafka基本概念 kafka集群 數(shù)據(jù)冗余 分區(qū)的寫入 讀取分區(qū)數(shù)據(jù) 順序消費(fèi) 提交策略 零拷貝技術(shù)(netty) kafka是一款分布式、支持分區(qū)的、多副本,基于zookeeper協(xié)調(diào)的分布式消息系統(tǒng)。最大的特性就是可以實時處理大量數(shù)據(jù)來滿足需求。

    2024年01月25日
    瀏覽(23)
  • CAS自旋鎖,看這一篇就夠了

    前序 時隔多年,杰倫終于出了新專輯,《最偉大的作品》讓我們穿越到1920年,見到了馬格利特的綠蘋果、大利的超現(xiàn)實、常玉畫的大腿、莫奈的睡蓮、徐志摩的詩… 他說“最偉大的作品”并不是自己的歌,而是這個世界上最偉大的藝術(shù)作品們。 為什么要寫CAS自旋鎖呢?最近

    2023年04月08日
    瀏覽(19)
  • 還不會拓?fù)渑判颍靠催@一篇就夠了

    還不會拓?fù)渑判??看這一篇就夠了

    拓?fù)渑判蚴且环N有向無環(huán)圖(DAG)的頂點(diǎn)排序方法,它將一個有向無環(huán)圖中的所有頂點(diǎn)排成一個線性序列,使得圖中 任意一條有向邊上的起點(diǎn)排在終點(diǎn)的前面 。 這樣說還不夠具體,我們先來看一個例子。假設(shè)某大學(xué)的課程安排如下: 課程編號 課程名稱 先修課程 1 1 1 高等數(shù)

    2023年04月08日
    瀏覽(74)
  • 搞懂Mybatis逆向?程這一篇就夠了

    搞懂Mybatis逆向?程這一篇就夠了

    項目結(jié)構(gòu) 創(chuàng)建一個空的模塊,此時java目錄里面沒有代碼,mapper映射文件也沒有。 導(dǎo)入依賴 在pom中添加逆向?程插件 注 : GAV坐標(biāo)是指在軟件開發(fā)中常用的一種標(biāo)識方式,用于唯一確定一個軟件插件或庫。它由三個部分組成:Group ID(組織ID)、Artifact ID(項目ID)和Version(版

    2024年02月11日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包