Tạo giới tính bằng label trong WinForm

Chào mn, mình có 1 label có text mặc đinh là Nam, khi mình click vào thì nó chuyển sang Nữ, click tiếp thì chuyển lại Nam. Mình thử rất nhiều cách nhưng chỉ click vào thì nó chỉ chuyển sang nữ thôi, muốn chuyển lại nam thì làm cách nào ạ, cảm ơn mn giúp đỡ.

private void lb_phai_Click(object sender, EventArgs e)
        {
              lb_phai.Text = "Nữ";
          
        }

Cơ bản các cách sau giống nhau cả, chỉ khác kiểu dữ liệu thôi.

Chuỗi

Dùng chính giá trị của nhãn.

private void lb_phai_Click(object sender, EventArgs e)
        {
              lb_phai.Text = lb_phai.Text== "Nữ"?"Nam":"Nữ";
        }

Ưu: đỡ tốn 1 trường lưu dữ liệu.
Nhược: Nếu ứng dụng đa ngôn ngữ, khi thay đổi ngôn ngữ sẽ có vấn đề (Male, Female so sánh với Nữ)… Hoặc bản dịch trùng lặp…

Luận lý (Boolean)

Dùng 1 biến toàn cục kiểu bool

// True: Nữ
// False: Nam
private bool x = True;
private void lb_phai_Click(object sender, EventArgs e)
        {
              x = !x;
              lb_phai.Text = x? "Nữ":"Nam";
        }

Ưu: Nhanh, gọn.
Nhược: Không thể thêm các giới tính khác (LGBT).

Số (Integer)

Dùng biến số toàn cục để lưu

// 0: Nữ
// 1: Nam
private int x = 0;
private void lb_phai_Click(object sender, EventArgs e)
        {
              x = x==0?1:0;
              lb_phai.Text = x==0?"Nữ":"Nam";
        }

Ưu: Thích thêm các giới tính khác vẫn được.

Enumeration

3 Likes

Hãy dùng RadioButton cho lành.
Mỗi control nó có chức năng riêng của nó. Dùng đúng cách vừa trực quan vừa nhẹ nhàng.

1 Like

Câu trả lời có tâm nhất quả đất :smile:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?