COMBOBOX – LISTBOX

1.     ComboBox

ComboBox đưc dùng đ hin th mt danh sách, mi ln ngưi dùng ch có th chn mt la chn, có th nhp mi.

winforms bai5 02 PNG

Hình 2.36. Ví dụ sử dụng ComboBox

Mt s thao tác vi ComboBox:

·       Add(): Thêm mt mc chn vào cui danh sách ListBox.

·       Insert(): Chèn thêm mc chn vào v trí i.

·       Count: Tr v s muc chn hin đang có.

·       Item(): Tr v mc chn v trí th i.

·       Remove(): B mc chn.

·       RemoveAt(): B mc chn v trí th i.

·       Contains(): Tr v True nếu có mc chn trong danh sách, tr v False nếu không có mc chn trong danh sách.

·       Clear: Xóa tt c các mc chn.

·       IndexOf(): Tr v v trí mc chn trong danh sách, nếu không tìm thy s tr v -1.

Bảng 2.9. 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ó mt s kin là SelectedIndexChanged, s kin này xy ra khi thay đi mc chn trong ComboBox.

2.     ListBox

ListBox đưc dùng đ hin th mt danh sách các la chn, ngưi dùng có th chn mt hoc nhiu la chn cùng lúc.

winforms bai5 01 PNG

Hình 2.37. Ví dụ sử dụng ListBox

Mt s thao tác vi ListBox:

·       Add(): Thêm mt mc chn vào cui danh sách ListBox.

·       Insert(): Chèn thêm mc vào vào v trí i.

·       Count: Tr v s mc chn hin đang có.

·       Item(): Tr v mc chn v trí i.

·       Remove(): B mc chn.

·       RemoveAt(): B mc chn ti v trí i.

·       Contains(): Tr v True nếu có mc chn trong danh sách và tr v False nếu không có mc chn trong danh sách.

·       Clear: Xóa tt c các mc chn.

·       IndexOf(): Tr v v trí mc chn trong danh sách, nếu không tìm thy s tr v -1.

Bảng 2.10. 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ó mt s kin đưc s dng rt nhiu đó chính là SelectedIndexChanged, s kin này xy ra khi thay đi mc chn trong ListBox.

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

Trong phn này s thc hin to hai ng dng s dng ComboBox và ListBox, các bn chú ý tho dõi nhé.

Ví dụ sử dụng ListBox

Ví d thc hin to giao din cho Form như mu dưi đây, sau đó viết các s kin cho các điu khin Button.

winforms bai5 03 PNG

Hình 2.38. Thiết kế giao diện sử dụng ListBox

Yêu cu:

·       Nhn vào Button "Nhp thông tin" thì ni dung trong ô TextBox "H tên" s đưc thêm vào ListBox.

·       Nhn vào Button "Xóa thông tin đang chn" s xóa ni dung h tên đang chn trong ListBox.

·       Nhn vào Button "Xóa thông tin đu" s xóa ni dung h tên đu tiên trong ListBox.

·       Nhn vào Button "Xóa thông tin cui" s xóa ni dung h tên cui cùng trong ListBox.

·       Nhn vào Button "Xóa tt c thông tin" s xóa toàn b ni dung có bên trong ListBox.

·       Mi khi thêm hoc xóa thông tin ngưi khai báo trong ListBox, "Tng s ngưi đã khai báo" s đưc cp nht li.

Các bưc thc hin:

c 1: Thc hin to giao din cho Form ging như mu, bao gm:

·       2 ô TextBox đ nhp và hin th thông tin.

·       5 Button vi 5 s kin tương ng.

·       1 ListBox đ hin th các khai báo.

c 2: X lý s kin trên Button "Nhp thông tin".

Đ x lý cho Button này, ta s Click Double vào Button đ sang ca s x lý s kin. Ta s ln lưt x lý s kin theo yêu cu ca đ bài:

·       S dng String.IsNullOrEmpty() đ đt điu kin cho ô TextBox không đưc đ trng, nếu TextBox trng thì hin th hp thoi cho ngưi dùng biết.

·       S dng Items.Add() đ thêm ni dung t ô TextBox vào ListBox

·       S dng Items.Count đ đếm tng s phn t có trong ListBox và đưa nó vào ô TextBox hin th.

·       S dng Clear() đ xóa hết các thông tin trong ô TextBox nhp 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 !!!");

        }

c 3: X lý s kin trên Button "Xóa thông tin đang chn".

Trong Button này, ta cn xét điu kin nếu trong ListBox đã tn ti phn t thì khi đó chúng ta mi thc hin xóa. Ta s x dng Items.Remove ti v trí SelectedItems[0] đ xóa phn t đang đưc chn.

Sau khi xóa xong ta cn cp nht li tng s phn t trong ô TextBox hin 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();

        }

c 4: X lý s kin trên Button "Xóa thông tin đu" và trên Button "Xóa thông tin cui".

V cơ bn hai Button này vic x lý s kin khá ging nhau, đu s dng Items.RemoveAt() đ thc hin xóa đu và xóa cui.

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

        }

c 5: X lý s kin trên Button "Xóa tt c thông tin".

Trong Button này khá đơn gin, ta s dng Items.Clear() đ xóa toàn b phn t trong ListBox, sau đó cp nht li ô TextBox hin th là "0".

private void btn_xoatatca_Click(object sender, EventArgs e)

        {

            lstBox_hienthi.Items.Clear();

            txt_hienthi.Text = "0";

        }

Kết quSau khi thc hin x lý các s kin, các bn có th kim tra nó, dưi đây s Demo Button "Nhp thông tin", còn các Button khác các bn có th t kim tra nhé.

winforms bai5 04 PNG

Hình 2.39. Kết quả minh họa sử dụng ListBox

Ví dụ sử dụng ComboBox

Ví d viết mt ng dng s dng ComboBox vi giao din như mu dưi đây, kèm theo các s kin.

Hình 2.40. Thiết kế giao diện sử dụng ComboBox

Yêu cu:

·       Xây dng ng dng vi giao din như trên gm ComboBox cha danh sách 4 màu (Yellow, Red, Blue, Black) và mt Label hin th dòng ch "Chào mng bn đến vi ComboBox".

·       Khi chn màu trong ComboBox và nhn vào nút Button "Đi màu" thì màu ca dòng ch và màu nn ca Label s thay đi tương ng.

·       Nhn vào nút Button "Thoát" xác nhn ngưi dùng mun đóng Form hin hành. Nếu chYES thì kết thúc chương trình thc thi, nếu chNO thì hy b lnh kết thúc.

Các bưc thc hin:

c 1: Xây dng giao din Form như mu, bao gm:

·       2 Label đ hin th dòng ch.

·       1 ComboBox vi 4 Items là 4 màu (Yellow, Red, Blue, Black).

·       2 Button vi hai s kin là đi màu và thoát.

c 2: Viết s kin cho Button "Đi màu".

Trong Button này, ta ch cn s dng .Text đ kim tra, nếu màu đang chn là Yellow thì đForeColor thành Yellow, tương t như vy cho 3 màu còn li.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

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;

            }

        }

c 3: Viết s kin cho Button "Thoát".

các bài trưc đã có nói v s kin trong Button "Thoát", đơn gin ta ch cn s dng MessageBox.Show() kết hp vi Application.Exit() đ to hp thoi hi ngưi dùng có mun thoát hay không.

1

2

3

4

5

6

7

8

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

            }

        }

4.     Bài tập

Luyn tp thành tho ComboBox và ListBox đây hai trong s các điu khin thông thưng trong winforms và đưc s dng nhiu.