文章目錄
- 9 復選列表框CheckedListBox
- 10. 列表框ListBox
- 10.1 實例:買菜
- 10.2 實例:購菜 應用二
-
WinForm 是 Windows Form 的簡稱,是基于 .NET Framework 平臺的客戶端(PC軟件)開發技術,是 C# 語言中的一個重要應用。
-
.NET 提供了大量 Windows 風格的控件和事件,可以直接拿來使用。
-
本專欄內容是按照標題序號逐漸深入的,如有不懂的基礎問題,可看前面教程。
9 復選列表框CheckedListBox
復選列表框顯示的效果與復選框類似,但在選擇多個選項時操作比一般的復選框更方便。
目標:使用復選列表框完成選購水果的操作。
添加 CheckedListBox ;
在屬性items中添加 復選列表框的內容;
在屬性items中添加 復選列表框的內容,按確認
CheckedListBox中就添加了復選列表框
在button中添加函數
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WinFormTest
{public partial class Form1 : Form{public Form1()// 修改窗體初始化函數{InitializeComponent();}private void button1_Click(object sender, EventArgs e){string msg = "";for (int i = 0; i < checkedListBox1.CheckedItems.Count; i++){msg = msg + " " + checkedListBox1.CheckedItems[i].ToString();}if (msg != ""){MessageBox.Show("您購買的商品有:" + msg, "提示");}else{MessageBox.Show("您沒有選購商品!", "提示");}}}
}
運行測試
10. 列表框ListBox
列表框控件中有一些屬性與前面介紹的控件不同,如下表所示:
屬性名 | 作用 |
---|---|
MultiColumn | 獲取或設置列表框是否支持多列,如果設置為 True,則表示支持多列; 如果設置為 False,則表示不支持多列,默認為 False |
Items | 獲取或設置列表框控件中的值 |
SelectedItems | 獲取列表框中所有選中項的集合 |
SelectedItem | 獲取列表框中當前選中的項 |
SelectedIndex | 獲取列表框中當前選中項的索引,索引從 0 開始 |
SelectionMode | 獲取或設置列表框中選擇的模式,當值為 One 時,代表只能選中一項, 當值為 MultiSimple 時,代表能選擇多項, 當值為 None 時,代表不能選 擇,當值為 MultiExtended 時,代表能選擇多項,但要在按下 Shift 鍵后 再選擇列表框中的項 |
列表框還提供了一些方法來操作列表框中的選項,由于列表框中的選項是一個集合形式的,列表項的操作都是用 Items 屬性進行的
。
10.1 實例:買菜
使用列表框列出所需的商品。
注: ListBox實現多選需要設置窗體的 SelectionMode 屬性為 MultiSimple
。
添加 ListBox ;
在屬性items中添加 復選列表框的內容;
青菜
黃瓜
南瓜
豌豆
辣椒
茄子
輸入確認后
在button 中添加代碼
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WinFormTest
{public partial class Form1 : Form{public Form1()// 修改窗體初始化函數{InitializeComponent();}private void button1_Click(object sender, EventArgs e){string msg = "";for (int i = 0; i < listBox1.SelectedItems.Count; i++){msg = msg + " " + listBox1.SelectedItems[i].ToString();}if (msg != ""){MessageBox.Show("您購買的商品有:" + msg, "提示");}else{MessageBox.Show("您沒有選購商品!", "提示");}}}
}
注: ListBox實現多選需要設置窗體的 SelectionMode 屬性為 MultiSimple
。
默認值為one
10.2 實例:購菜 應用二
- 在上述實例的基礎上添加兩個按鈕,一個負責向列表框中添加菜品,一個負責刪除選中的列表項。
上述實例的基礎上添加 1個 label,1個TextBox,2個Button
修改屬性:
Button2屬性中Name:add,Text:添加
Button3屬性中Name:Del,Text:刪除
編輯代碼
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WinFormTest
{public partial class Form1 : Form{public Form1()// 修改窗體初始化函數{InitializeComponent();}private void button1_Click(object sender, EventArgs e)//下單{string msg = "";for (int i = 0; i < listBox1.SelectedItems.Count; i++){msg = msg + " " + listBox1.SelectedItems[i].ToString();}if (msg != ""){MessageBox.Show("您選擇的商品是:" + msg, "提示");}else{MessageBox.Show("您沒有選擇商品", "提示");}}private void add_Click(object sender, EventArgs e)//添加{// 當文本框中的值不為空時將其添加到列表框中if (textBox1.Text != ""){listBox1.Items.Add(textBox1.Text);}else{MessageBox.Show("請添加商品!");}}private void Del_Click(object sender, EventArgs e)//刪除{//由于列表框控件中允許多選所以需要循環刪除所有已選項int count = listBox1.SelectedItems.Count; // 獲取listBox內被選中的元素數量List<string> itemValues = new List<string>(); // 定義一個字符串從列表if (count != 0){for (int i = 0; i < count; i++){itemValues.Add(listBox1.SelectedItems[i].ToString());}foreach (string item in itemValues){listBox1.Items.Remove(item);}}else{MessageBox.Show("請選擇需要刪除的商品!");}}}
}
運行測試
刪除商品 辣椒
添加商品 雞蛋