2016-12-13 5 views
0

Bitte lesen Sie die Frage, da es kein Duplikat ist. Ich habe eine winforms App i C# Hexe hat eine Tabcontrol mit 3 Tabs. Jede Registerkarte hat 4 Radiobuttons. Wenn ich die App ausführen, funktionieren die Optionsfelder innerhalb der gleichen Registerkarte, aber wenn ich eine andere Registerkarte auswähle bleibt die Auswahl auf der ersten Registerkarte. Ich habe versucht, alle überprüften Radiobuttons zu löschen, wenn ich Tabulatoren ändere, aber aus irgendeinem Grund funktioniert es nicht. Der Code ist die Verwendung ist:Radiobuttons auf verschiedenen Tabcontrol bleiben ausgewählt

private void UncheckLayouts(TabPage activePage) 
{ 
    foreach (Control control in tabControl1.Controls) 
    { 
     if (control is RadioButton) 
     { 
      RadioButton rb = control as RadioButton; 
      rb.Checked = false; 
     } 
    } 
} 

private void radioButton1_Click(object sender, EventArgs e) 
{ 
    UncheckLayouts(tabControl1.SelectedTab); 
} 

private void radioButton2_Click(object sender, EventArgs e) 
{ 
    UncheckLayouts(tabControl1.SelectedTab); 
} 
... 

ich so versucht, zu:

private void tabControl1_Deselecting(object sender, TabControlCancelEventArgs e) { 
    foreach (var ctrl in e.TabPage.Controls) { 
     if (ctrl is RadioButton) { 
      RadioButton tb = ctrl as RadioButton; 
      rb.Checked = false; 
     } 
    } 
} 

EDIT: neuen Code.

public Form2() 
{ 
    InitializeComponent(); 
    tabControl1.Selected += TabControl1_Selected; 
} 
private void TabControl1_Selected(object sender, TabControlCancelEventArgs e) 
{ 
    foreach (var ctrl in e.TabPage.Controls) 
    { 
     if (ctrl is RadioButton) 
     { 
      RadioButton tb = ctrl as RadioButton; 
      tb.Checked = false; 
     } 
    } 
} 

Aber keine Lösung funktioniert. Alle Radiobuttons wurden zu jeder Registerkarte mit dem Designer hinzugefügt.

Kann mir bitte helfen. Vielen Dank im Voraus,

Antwort

1

Sie den folgenden Code verwenden können, testete ich, dass es in Ordnung

private void InitializeComponent(){ 
      ........ 
tabControl1.Selected += TabControl1_Selected; 
} 



private void TabControl1_Selected(object sender, TabControlEventArgs e) 
{ 
    foreach (var ctrl in e.TabPage.Controls) 
    { 
     if (ctrl is RadioButton) 
     { 
      RadioButton tb = ctrl as RadioButton; 
      tb.Checked = false; 
     } 
    } 
} 
+0

Hallo, Danke für die Hilfe arbeitet. Ich habe versucht, Ihren Code, aber einen Fehler in Zeile 'tabControl1.Selected + = TabControl1_Selected;' 'Keine Überladung für 'TabControl1_Selected' entspricht Delegat 'TabControlEventHandler' \t' – septaug

+0

Ich habe meinen Beitrag mit Ihrer Lösung aktualisiert, ist es in Ordnung? Ich bekomme immer noch einen Fehler auf 'tabControl1.Selected + = TabControl1_Selected;' – septaug

+0

Es tut mir leid, ich habe den falschen Code kopiert, ich habe meinen Code behoben –

Verwandte Themen