2012-11-24 78 views
11

Tôi có một hộp nhóm chứa các nút radio ví dụ:Cách nhận giá trị của Nút radio?

o Nam

o Nữ

tôi muốn mã của tôi để có được giá trị được lựa chọn nút radio và sao chép nó vào loại chuỗi biến vui lòng sử dụng đơn giản đang gây m không phải là rất chuyên nghiệp

cảm ơn

+1

Bạn có nghĩa là nút radio? –

+1

hey @CodingMash anh ta được gọi là 'nút tỷ lệ' ở khắp mọi nơi đang thực sự nghĩ đến bất kỳ điều khiển nào như vậy! – sajanyamaha

+0

Đó là một loại chắc chắn, như cô đưa ra ví dụ về các nút radio, nam nữ. –

Trả lời

18

Đối với Win Forms:

Để có được giá trị (giả sử bạn muốn giá trị chứ không phải văn bản) ra khỏi nút radio, bạn sẽ có thuộc tính Đã kiểm tra:

string value = ""; 
bool isChecked = radioButton1.Checked; 
if(isChecked) 
    value=radioButton1.Text; 
else 
    value=radioButton2.Text; 

Đối với Web Forms:

Và CS-ở một số nút bấm

string value=rdoPriceRange.SelectedItem.Value.ToString(); 
5

Bạn cần phải kiểm tra một nếu bạn có hai

if(rbMale.Checked) 
{ 

} 
else 
{ 

} 

Bạn cần phải rà soát tất cả các hộp kiểm nếu có nhiều thì hai

if(rb1.Checked) 
{ 

} 
else if(rb2.Checked) 
{ 

} 
else if(rb3.Checked) 
{ 

} 
+0

Bạn cần kiểm tra cả hai nếu có hai nếu bạn không có thuộc tính mặc định. – Jesse

+1

Bit off chủ đề, nhưng hãy chương trình một cách chính xác: Tại sao bạn kiểm tra "if (a == true)" là nó không đủ cho booleans để kiểm tra "if (a)". Phương thức của bạn có vẻ như "if (a == true) {b = true;} else {b = false;}" trong khi thực tế bạn có nghĩa là "b = a;" –

1

Bạn cũng có thể sử dụng một sự kiện chung cho RadioButtons của bạn, và bạn có thể sử dụng Tag tài sản để vượt qua thông tin cho chuỗi của bạn hoặc bạn có thể sử dụng thuộc tính văn bản nếu bạn muốn chuỗi của bạn giữ cùng một giá trị như Văn bản của RadioButton của bạn.

Điều gì đó tương tự.

private void radioButton_CheckedChanged(object sender, EventArgs e) 
{ 
    if (((RadioButton)sender).Checked == true) 
     sex = ((RadioButton)sender).Tag.ToString(); 
} 
1

tôi thấy rằng việc sử dụng các sự kiện chung nêu trên hoạt động tốt và bạn có thể có những sự kiện phổ biến thiết lập như thế này:

private void checkChanged(object sender, EventArgs e) 
    { 
     foreach (RadioButton r in yourPanel.Controls) 
     { 
      if (r.Checked) 
       textBox.Text = r.Text; 
     } 
    } 

Tất nhiên, sau đó bạn không thể có điều khiển khác trong bạn mà bạn sử dụng, nhưng sẽ hữu ích nếu bạn chỉ có một bảng điều khiển riêng cho tất cả các nút radio của bạn (chẳng hạn như sử dụng bảng phụ bên trong hộp nhóm hoặc bạn muốn sắp xếp các điều khiển của mình)

0

Một sự thay thế là sử dụng enum và một lớp thành phần mở rộng RadioBu chuẩn tton.

public enum Genders 
{ 
    Male, 
    Female 
} 

[ToolboxBitmap(typeof(RadioButton))] 
public partial class GenderRadioButton : RadioButton 
{ 
    public GenderRadioButton() 
    { 
     InitializeComponent(); 
    } 

    public GenderRadioButton (IContainer container) 
    { 
     container.Add(this); 

     InitializeComponent(); 
    } 

    public Genders gender{ get; set; } 
} 

Sử dụng một xử lý sự kiện commom cho GenderRadioButtons

private void Gender_CheckedChanged(Object sender, EventArgs e) 
{ 
    if (((RadioButton)sender).Checked) 
    { 
     //get selected value 
     Genders myGender = ((GenderRadioButton)sender).Gender; 
     //get the name of the enum value 
     string GenderName = Enum.GetName(typeof(Genders), myGender); 
     //do any work required when you change gender 
     switch (myGender) 
     { 
      case Genders.Male: 
       break; 
      case Genders.Female: 
       break; 
      default: 
       break; 
     } 
    } 
} 
Các vấn đề liên quan