2012-11-24 13 views
11

Ich habe eine Gruppe enthält Radiobuttons zB.Wie erhalten Sie Radio Buttons?

o Männlich

o weiblich

Ich möchte meinen Code den ausgewählten Wert von Optionsfeld bekommen und kopieren Sie sie in String-Typ Variable freundlich einfachen Code Ursache m verwenden nicht sehr professionell

danke

+1

Verwenden Haben Sie Radiobuttons bedeuten? –

+1

hey @CodingMash hat er als "ratio button" bezeichnet, überall wo ich wirklich an eine solche Kontrolle denke! – sajanyamaha

+0

Es ist definitiv eine Art, wie sie Beispiel für Radioknöpfe gibt, männlich weiblich. –

Antwort

18

Für Win Forms:

den Wert erhalten (Angenommen, Sie möchten den Wert, nicht den Text) aus einem Optionsfeld, erhalten Sie die Checked-Eigenschaft:

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

für Web Forms:

Und CS-in einigen Schaltfläche klicken

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

Sie benötigen einen überprüfen, ob Sie zwei

if(rbMale.Checked) 
{ 

} 
else 
{ 

} 

Sie haben müssen alle Kontrollkästchen überprüfen, ob mehr als zwei

if(rb1.Checked) 
{ 

} 
else if(rb2.Checked) 
{ 

} 
else if(rb3.Checked) 
{ 

} 
+0

Sie müssen beide prüfen, wenn es zwei gibt, wenn Sie keine Standardeigenschaft festgelegt haben. – Jesse

+1

Bit off Thema, aber lassen Sie uns richtig programmieren: Warum überprüfen Sie "wenn (a == wahr)" ist es nicht genug für booleans zu überprüfen, "wenn (a)". Deine Methode scheint wie "wenn (a == wahr) {b = wahr;} else {b = falsch;}" während du tatsächlich "b = a" meinst; –

1

Sie auch einen Common Event für Ihre Optionsfelder verwenden können, und Sie können die Tag Eigenschaft verwenden kann passieren Informationen zu Ihrer Zeichenfolge oder Sie können die Texteigenschaft verwenden, wenn Ihre Zeichenfolge denselben Wert wie der Text Ihres RadioButton haben soll.

So etwas wie das.

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

Ich fand, dass die Common Event unter Verwendung der oben beschriebenen gut funktioniert und man konnte die gemeinsame Veranstaltung wie diese eingerichtet haben:

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

Natürlich können Sie nicht andere Steuerelemente haben in Ihrem Verwenden Sie das Bedienfeld, das Sie verwenden, aber es ist nützlich, wenn Sie nur ein separates Bedienfeld für alle Optionsfelder haben (z. B. ein Unterfeld in einem Gruppenfeld verwenden oder Ihre Steuerelemente lieber organisieren)

0

Eine Alternative ist die Verwendung eines enum und eine Komponentenklasse, die den Standard-RadioBu erweitert 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; } 
} 

eine commom Event-Handler für die 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; 
     } 
    } 
}