CƠ BẢN
SỰ KIỆN
NÂNG CAO
FIREBASE
WINDOWS FORM
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

ComboBox - ListBox trong lập trình C# winforms

Trong hướng dẫn này mình sẽ giới thiệu các bạn một trong những điều khiển thông thường tiếp theo đó chính là ComboBox và ListBox.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

ComboBox ListBox là hai điều khiển có nhiều điểm tương đồng, đều sử dụng để chứa dữ liệu cho phép người dùng lựa chọn.

Chúng ta sẽ cùng nhau tim hiểu về các khai niệm cũng như các sự kiện và thuộc tính của ComboBox và ListBox nhé.

1. ComboBox

ComboBox được dùng để hiển thị một danh sách những mỗi lần người dùng chỉ có thể chọn một lựa chọn, có thể nhập mới.

winforms bai5 02 PNG

Một số thao tác với ComboBox:

  • Add(): Thêm một mục chọn vào cuối danh sách ListBox.
  • Insert(): Chèn thêm mục chọn vào vị trí i.
  • Count: Trả về số muc chọn hiện đang có.
  • Item(): Trả về mục chọn ở vị trí thứ i.
  • Remove(): Bỏ mục chọn.
  • RemoveAt(): Bỏ mục chọn ở vị trí thứ i.
  • Contains(): Trả về True nếu có mục chọn trong danh sách, trả vể False nếu không có mục chọn trong danh sách.
  • Clear: Xóa tất cả các mục chọn.
  • IndexOf(): Trả về vị trí mục chọn trong danh sách, nếu không tìm thấy sẽ trả về -1.

Một số thuộc tính thường dùng:

Thuộc tính Mô tả
Text Trả về nội dung dòng dữ liệu đang hiển thị trên ComboBox
DropDownStyle

Quy định định dạng của ComboBox, nhận một tring các giá trị:

- Simple: hiển thị theo dạng ListBox + TextBox có thể chọn dữ liệu từ ListBox hoặc nhập mới vào TextBox

- DropDownList: Chỉ cho phép chọn dữ liệu trong ComboBox

- DropDown: Giá trị mặc định, có thể chọn hoặc nhập mới mục dữ liệu vào ComboBox

Items Trả về các mục chứa trong ComboBox
DropDownHeight Thiết lập chiều cao tối đa khi sổ xuống của ComboBox
DropDownWidth Thiết lập độ rộng của mục chọn trong ComboBox
SelectedIndex Lấu chỉ số mục được chọn, chỉ số mục đầu tiên là 0
SelectedItem Trả về mục được chọn
SelectedText Lấy chuỗi hiển thị của mục chọn trên ComboBox
DataSource Chọn tập dữ liệu điền vào ComboBox. Tập dữ liệu có thể là mảng, chuỗi, ArrayList,...
DisplayMember Gán dữ liệu thành viên sẽ hiển thị trên ComboBox
ValueMember Thuộc tính này chỉ định dữ liệu thành viên sẽ cung cấp giá trị cho ComboBox
SelectedValue Trả về giá trị của mục chọn (ValueMember) nếu ComboBox có liên kết dữ liệu. Nếu không liên kết dữ liệu hoặc ValueMember không được thiết lập thì giá trị SelectedValue là giá trị chuỗi của thuộc tính SelectedItem

Trong ComboBox có một sự kiện là SelectedIndexChanged, sự kiện này xảy ra khi thay đổi mục chọn trong ComboBox.

2. ListBox

ListBox được dùng để hiển thị một danh sách các lựa chọn, người dùng có thể chọn một hoặc nhiều lựa chọn cùng lúc.

winforms bai5 01 PNG

Một số thao tác với ListBox:

  • Add(): Thêm một mục chọn vào cuối danh sách ListBox.
  • Insert(): Chèn thêm mục vào vào vị trí i.
  • Count: Trả về số mục chọn hiện đang có.
  • Item(): Trả về mục chọn ở vị trí i.
  • Remove(): Bỏ mục chọn.
  • RemoveAt(): Bỏ mục chọn tại vị trí i.
  • Contains(): Trả về True nếu có mục chọn trong danh sách và trả về False nếu không có mục chọn trong danh sách.
  • Clear: Xóa tất cả các mục chọn.
  • IndexOf(): Trả về vị trí mục chọn trong danh sách, nếu không tìm thấy sẽ trả về -1.

Một số thuộc tính của ListBox thường dùng:

Thuộc tính Mô tả
DataSource Chọn tập dữ liệu điền vào ListBox. Tập dữ liệu có thể là mảng, chuỗi, ArrayList,...
DisplayMember Dữ liệu thành viên sẽ được hiển thị trên ListBox
ValueMember Thuộc tính này chỉ định dẽ liệu thành viên sẽ cung cấp giá trị cho ListBox
SelectedValue Trả về giá trị của mục chọn nếu ListBox có liên kết dữ liệu. Nếu không liên kết với dữ liệu hoặc thuộc tính ValueMember không được thiết lập thì giá trị thuộc tính SelectedValue là giá trị chuỗi của thuộc tính SelectedItem
Items Các mục chứa trong ListBox
SelectedItem Trả về mục được chọn
SelectedIndex Lấy chỉ số mục được chọn, chỉ số mục chọn đầu tiên là 0
SelectionMode

Cho phép chọn một hoặc nhiều dòng dữ liệu trên ListBox, bao gồm:

- One: Chỉ chọn một giá trị

- MultiSimple: Cho phép chọn nhiều, chọn bằng cách Click vào mục chọn, bỏ chọn bằng cách Click vào mục đã chọn


- MultiExtended: Chọn nhiều bằng cách nhấn kết hợp với Shift hoặc Ctrl

SelectedItems Được sử dụng khi SelectionMode là MultiSimple hoặc MultiExtended. Thộc tính SelectedItems chứa các chỉ số của các dòng dữ liệu được chọn
SelectedItems Được sử dụng khi SelectionMode là MultiSimple hoặc MultiExtended. Thuộc tính SelectedItems chứa các chỉ số của các dòng dữ liệu được chọn

Trong ListBox có một sự kiện được sử dụng rất nhiều đó chính là SelectedIndexChanged, sự kiện này xảy ra khi thay đổi mục chọn trong ListBox.

3. Ví dụ sử dụng các điều khiển ComboBox và ListBox

Trong phần này mình sẽ thực hiện tạo hai ứng dụng sử dụng ComboBox ListBox, các bạn chú ý thẽo dõi nhé.

Ví dụ sử dụng ListBox

Ở ví dụ này, mình sẽ thực hiện tạo giao diện cho Form như mẫu dưới đây, sau đó viết các sự kiện cho các điều khiển Button.

winforms bai5 03 PNG

Yêu cầu:

  • Nhấn vào Button "Nhập thông tin" thì nội dung trong ô TextBox "Họ tên" sẽ được thêm vào ListBox.
  • Nhấn vào Button "Xóa thông tin đang chọn" sẽ xóa nội dung họ tên đang chon trong ListBox.
  • Nhấn vào Button "Xóa thông tin đầu" sẽ xóa nội dung họ tên đầu tiên trong ListBox.
  • Nhấn vào Button "Xóa thông tin cuối" sẽ xóa nội dung họ tên cuối cùng trong ListBox.
  • Nhấn vào Button "Xóa tất cả thông tin" sẽ xóa toàn bộ nội dung có bên trong ListBox.
  • Mỗi khi thêm hoặc xóa thông tin người khai báo trong ListBox, "Tổng số người đã khai báo" sẽ được cập nhật lại.

Các bước thực hiện:

Bước 1: Thực hiện tạo giao diện cho Form giống như mẫu, bao gồm:

  • 2 ô TextBox để nhập và hiển thị thông tin.
  • 5 Button với 5 sự kiện tương ứng.
  • 1 ListBox để hiển thị các khai báo.

Bước 2: Xử lý sự kiện trên Button "Nhập thông tin".

Để xử lý cho Button này, ta sẽ Click Double vào Button để sang cửa sổ xử lý sự kiện. Ta sẽ lần lượt xử lý sự kiện theo yêu cầu của đề bài:

  • Sử dụng String.IsNullOrEmpty() để đặt điều kiện cho ô TextBox không được để trống, nếu TextBox trống thì hiển thị hộp thoại cho người dùng biết.
  • Sử dụng Items.Add() để thêm nội dung từ ô TextBox vào ListBox
  • Sử dụng Items.Count để đếm tổng số phần tử có trong ListBox và đưa nó vào ô TextBox hiển thị.
  • Sử dụng Clear() để xóa hết các thông tin trong ô TextBox nhập sau khi đã thêm vào ListBox.
private void btn_nhap_Click(object sender, EventArgs e)
        {
            if (!String.IsNullOrEmpty(txt_nhap.Text))
            {
                lstBox_hienthi.Items.Add(txt_nhap.Text);
                txt_hienthi.Text = lstBox_hienthi.Items.Count.ToString();
                txt_nhap.Clear();
                txt_nhap.Focus();
            }
            else
                MessageBox.Show("Vui lòng điền đầy đủ thông tin !!!");
        }

Bước 3: Xử lý sự kiện trên Button "Xóa thông tin đang chọn".

Trong Button này, ta cần xét điều kiện nếu trong ListBox đã tồn tại phần tử thì khi đó chúng ta mới thực hiện xóa. Ta sẽ xử dụng Items.Remove tại vị trí SelectedItems[0] để xóa phần tử đang được chọn.

Sau khi xóa xong ta cần cập nhật lại tổng số phần tử ở trong ô TextBox hiển thị.

private void btn_xoadangchon_Click(object sender, EventArgs e)
        {
            int a = Convert.ToInt32(txt_hienthi.Text);
            if(lstBox_hienthi.SelectedItems.Count != 0)
            {
                lstBox_hienthi.Items.Remove(lstBox_hienthi.SelectedItems[0]);
            }
            txt_hienthi.Text = (a - 1).ToString();
        }

Bước 4: Xử lý sự kiện trên Button "Xóa thông tin đầu" và trên Button "Xóa thông tin cuối".

Về cơ bản ở hai Button này việc xử lý sự kiện khá giống nhau, đều sử dụng Items.RemoveAt() để thực hiện xóa đầu và xóa cuối.

private void btn_xoadau_Click(object sender, EventArgs e)
        {
            int a = Convert.ToInt32(txt_hienthi.Text);
            lstBox_hienthi.Items.RemoveAt(0);
            txt_hienthi.Text = (a - 1).ToString();
        }
private void btn_xoacuoi_Click(object sender, EventArgs e)
        {
            int a = Convert.ToInt32(txt_hienthi.Text);
            lstBox_hienthi.Items.RemoveAt(lstBox_hienthi.Items.Count - 1);
            txt_hienthi.Text = (a - 1).ToString();
        }

Bước 5: Xử lý sự kiện trên Button "Xóa tất cả thông tin".

Trong Button này khá đơn giản, ta sử dụng Items.Clear() để xóa toàn bộ phần tử trong ListBox, sau đó cập nhật lại ô TextBox hiển thị là "0".

private void btn_xoatatca_Click(object sender, EventArgs e)
        {
            lstBox_hienthi.Items.Clear();
            txt_hienthi.Text = "0";
        }

Kết quả: Sau khi thực hiện xử lý các sự kiện, các bạn có thể kiểm tra nó, dưới đây mình sẽ Demo Button "Nhập thông tin", còn các Button khác các bạn có thể tự kiểm tra nhé.

winforms bai5 04 PNG

Ví dụ sử dụng ComboBox

Ở ví dụ này mình sẽ viết một ứng dụng sử dụng ComboBox với giao diện như mẫu dưới đây, kèm theo các sự kiện.

winforms bai5 05 PNG

Yêu cầu:

  • Xây dựng ứng dụng với giao diện như trên gồm ComboBox chứa danh sách 4 màu (Yellow, Red, Blue, Black) và một Label hiển thị dòng chữ "Chào mừng bạn đến với Freetuts.net".
  • Khi chọn màu trong ComboBox và nhấn vào nút Button "Đổi màu" thì màu của dòng chữ và màu nền của Label sẽ thay đổi tương ứng.
  • Nhấn vào nút Button "Thoát" xác nhận người dùng muốn đóng Form hiện hành. Nếu chọn YES thì kết thúc chương trình thực thi, nếu chọn NO thì hủy bỏ lệnh kết thúc.

Các bước thực hiện:

Bước 1: Xây dựng giao diện Form như mẫu, bao gồm:

  • 2 Label để hiển thị dòng chữ.
  • 1 ComboBox với 4 Items là 4 màu (Yellow, Red, Blue, Black).
  • 2 Button với hai sự kiện là đổi màu và thoát.

Bước 2: Viết sự kiện cho Button "Đổi màu".

Trong Button này, ta chỉ cần sử dụng .Text để kiểm tra, nếu màu đang chọn là Yellow thì đổi ForeColor thành Yellow, tương tự như vậy cho 3 màu còn lại.

private void btn_doimau_Click(object sender, EventArgs e)
        {
            if(cbo_color.Text == "Yellow")
            {
                lb_doimau.BackColor = Color.Red;
                lb_doimau.ForeColor = Color.Yellow;
            }
            if (cbo_color.Text == "Red")
            {
                lb_doimau.BackColor = Color.Yellow;
                lb_doimau.ForeColor = Color.Red;
            }
            if (cbo_color.Text == "Blue")
            {
                lb_doimau.BackColor = Color.Yellow;
                lb_doimau.ForeColor = Color.Blue;
            }
            if (cbo_color.Text == "Black")
            {
                lb_doimau.BackColor = Color.White;
                lb_doimau.ForeColor = Color.Black;
            }
        }

Bước 3: Viết sự kiện cho Button "Thoát".

Ở các bài trước mình đã có nói về sự kiện trong Button "Thoát", đơn giản ta chỉ cần sử dụng MessageBox.Show() kết hợp với Application.Exit() để tạo hộp thoại hỏi người dùng có muốn thoát hay không.

private void btn_thoat_Click(object sender, EventArgs e)
        {
            DialogResult dg = MessageBox.Show("Bạn muốn đóng chương trình", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if(dg == DialogResult.Yes)
            {
                Application.Exit();
            }
        }

Kết quả:

winforms bai5 06 PNGwinforms bai5 07 PNG

4. Kết luận

Như vậy là chúng ta đã tìm hiểu xong về hai điều khiển thông thường trong winforms đó chính là ComboBox và ListBox. Đây cũng là hai điều khiển cuối cùng trong Series điều khiển thông thường. Ở các bài tiếp theo chúng ta sẽ cùng tìm hiểu về các điều khiển đặc biệt trong winforms, các bạn chú ý theo dõi nhé !!!

Cùng chuyên mục:

Cách viết hoa ký tự đầu tiên trong C#

Cách viết hoa ký tự đầu tiên trong C#

Mình sẽ thực hiện các chương trình để viết hoa ký từ đầu với các…

Cách xóa khoảng trắng một chuỗi trong C#

Cách xóa khoảng trắng một chuỗi trong C#

Mình sẽ thực hiện ba chương trình để xóa khoảng trắng bằng ba ...

Tìm phần nguyên và phần dư của phép chia trong C#

Tìm phần nguyên và phần dư của phép chia trong C#

Mình sẽ thực hiện các chương trình để tìm phần nguyên và phần dư bằng…

Cách kiểm tra năm nhuận trong C#

Cách kiểm tra năm nhuận trong C#

Hiểu đơn giản thì năm nhuận sẽ hơn năm không nhuận một ...

Chương trình kiểm tra số chẵn hay số lẻ trong C#

Chương trình kiểm tra số chẵn hay số lẻ trong C#

Mình sẽ thực hiện 3 chương trình với 3 cách khác nhau để kiểm tra…

Cách cộng hai số trong C# được nhập từ bàn phím

Cách cộng hai số trong C# được nhập từ bàn phím

Trong bài viết này mình sẽ hướng dẫn các bạn thực hiện chương trình cộng…

Viết ứng dụng quản lý học sinh C# Winfroms và Firebase

Viết ứng dụng quản lý học sinh C# Winfroms và Firebase

Cụ thể mình sẽ thực hiện viết một ứng dụng quản lý học sinh đơn…

Cách xóa dữ liệu trên Firebase với C# Winforms

Cách xóa dữ liệu trên Firebase với C# Winforms

Để có thể ôn lại các kiến thức ở các bài trước, mình vẫn sẽ…

Cách Update dữ liệu từ C# Winforms lên Firebase

Cách Update dữ liệu từ C# Winforms lên Firebase

Để có thể thao tác được với dữ liệu trong Realtime Database,

Cách Insert dữ liệu từ C# Winforms lên Firebase

Cách Insert dữ liệu từ C# Winforms lên Firebase

Cách lấy dữ liệu từ Firebase về C# Winforms

Cách lấy dữ liệu từ Firebase về C# Winforms

Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu cách lấy dữ liệu…

Cách kết nối C# Winforms với Firebase

Cách kết nối C# Winforms với Firebase

Sự kiện CellClick DataGridView trong C# Winforms

Sự kiện CellClick DataGridView trong C# Winforms

Sự kiện CellContentClick DataGridView trong C# Winforms

Sự kiện CellContentClick DataGridView trong C# Winforms

Mình sẽ hướng dẫn các bạn cách tạo và xử lý sự kiện CellContentClick

Sự kiện ValueChanged DateTimePicker trong C# Winforms

Sự kiện ValueChanged DateTimePicker trong C# Winforms

Mình sẽ hướng dẫn các bạn cách tạo và xử lý sự kiện ValueChanged

Sự kiện SelectedIndexChanged ListView trong C# Winforms

Sự kiện SelectedIndexChanged ListView trong C# Winforms

Mình sẽ giới thiệu các bạn cách tạo và xử lý sự kiện SelectedIndexChanged

Sự kiện SelectedIndexChanged ListBox trong C# Winforms

Sự kiện SelectedIndexChanged ListBox trong C# Winforms

Mình sẽ hướng dẫn cách tạo và xử lý sự kiện SelectedIndexChanged ...

Sự kiện SelectedIndexChanged ComboBox trong C# Winforms

Sự kiện SelectedIndexChanged ComboBox trong C# Winforms

Mình sẽ hướng dẫn các bạn cách tạo và xử lý sự ..

Sự kiện CheckedChanged RadioButton trong C# Winforms

Sự kiện CheckedChanged RadioButton trong C# Winforms

Trong bài viết này chúng

Sự kiện CheckedChanged CheckBox trong C# Winforms

Sự kiện CheckedChanged CheckBox trong C# Winforms

Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu về sự kiện CheckedChanged…

Top