2016-06-28 8 views
-1

Ich möchte meine Groupbox-Elemente säubern, nachdem ich auf eine Schaltfläche geklickt habe.Zurücksetzen von Groupbox-Elementen?

Ich habe einige Codeblöcke ausprobiert, aber sie funktionieren nicht für Rücksetzsteuerungen.

Ich möchte es nicht entfernen oder löschen, ich möchte nur die Elemente in der Groupbox zurücksetzen.

Dies funktioniert zum Entfernen von Groupbox-Elementen.

public void ClearPanels(GroupBox control) 
    { 
     control.Controls.Clear(); 
    } 

oder diese

groupBox2.Controls.Clear(); 

Es sieht so aus, bevor klicken. Before Click

Und wenn ich auf den Knopf klicke, wie Sie auf der rechten Seite sehen können.

After Click

Es entfernt ist, aber ich will es zurückzustellen.

Irgendwelche Ideen, wie ich das tun kann?

+1

wollen Was bedeutet klar bedeuten? Textbox entfernen, alles abwählen und Combobox zur ersten Wahl setzen? – Aimnox

+0

Ersetzen Sie einfach "if" durch "else if" in dieser Antwort. – Shaharyar

+0

_Ich möchte es reinigen._ Definieren Sie 'Clean'! – TaW

Antwort

2

Ich gehe davon aus, dass klar bedeutet, alles standardmäßig zu verlassen. Sie müssen alle Steuerelemente in der Groupbox füllen und je nachdem, welche Kontrolle sie haben, tun Sie etwas oder etwas anderes.

foreach (Control ctr in GB.Controls) 
{ 
    if (ctr is TextBox) 
    { 
     ctr.Text = ""; 
    } 
    else if (ctr is CheckedListBox) 
    { 
     CheckedListBox clb = (CheckedListBox)ctr; 
     foreach (int checkedItemIndex in clb.CheckedIndices) 
     { 
      clb.SetItemChecked(checkedItemIndex, false); 
     } 
    } 
    else if (ctr is CheckBox) 
    { 
     ((CheckBox)ctr).Checked = false; 
    } 
    else if (ctr is ComboBox) 
    { 
     ((ComboBox)ctr).SelectedIndex = 0; 
    } 
} 

Ich weiß nicht, was deneyim und nicht sind, aber ich denke, Sie auf die Idee zu prüfen, was es ist und den Wert zuweist Sie

1

Ich denke, der Begriff clear hängt ein wenig von der Art der Steuerelemente, die Sie verwenden. Während für eine TextBox Sie wahrscheinlich die Eigenschaft leeren möchten, möchten Sie wahrscheinlich für einen ListBox alle Elemente entfernen. So gibt es keine gemeinsame Clear() Methode für Kontrollen.

Was Sie tun können, ist so etwas wie das:

public void ClearPanels(GroupBox control) 
{ 
    foreach(Control childControl in control.Controls) 
     childControl.ResetText(); 
} 

Diese durchläuft alle Kind Control s in Ihrem GroupBox und setzt die Text Eigenschaft von ihnen. Vielleicht möchten Sie spezielle Behandlung für bestimmte Arten von Control hinzufügen.

Wenn Ihr GroupBox verschachtelte Steuerelemente enthält (wie ein anderer GroupBox mit weiteren Kontrollen darauf), Sie können diese Methode rekursiv machen müssen:

public void ClearPanels(Control control) 
{ 
    foreach(Control childControl in control.Controls) 
    { 
     childControl.ResetText(); 
     ClearPanels(childControl); // recursive call 
    } 
} 

Um wirklich „klar“ Ihre Kontrollen, Sie müssen ihren spezifischen Typ überprüfen. So könnte ein wenig fortschrittliche Methode das sein:

+0

Löscht es nicht den 'Text' aller Einträge von' ListBox' oder 'DropDown'? – Shaharyar

+0

@Shaharyar nein, Elemente in ListBoxen sind keine Steuerelemente. 'ResetText' setzt einfach' Control.Text = string.Empty', ruft aber nicht so etwas wie 'ListView.Items.Clear()' auf. –

+0

Dann würde ich sagen, dass es die Frage nicht vollständig beantwortet. – Shaharyar

Verwandte Themen