/ / Lösche alle TextBoxes Texte [duplizieren] - c #, Textbox, löschen

Lösche alle TextBoxes Texte [duplizieren] - c #, Textfeld, löschen

Ich habe eine RegisterkarteControl, die viele TextBoxes enthält, möchte ich eine Schaltfläche hinzufügen, um alle TextBoxes Texte auf einmal zu löschen, habe ich diesen Code ausprobiert:

private void ClearButton_Click(object sender, EventArgs e)
{
foreach (TextBox t in tabControl1.SelectedTab.Controls)
{
t.Clear();
}
}

Aber dieser Code funktioniert nicht, ich habe folgende Fehlermeldung erhalten:

Das Objekt des Typs "System.Windows.Forms.Button" kann nicht in "System.Windows.Forms.TextBox" eingegeben werden

Was ist falsch in diesem Code?

Antworten:

2 für die Antwort № 1

Probieren Sie diesen Code aus:

void ClearTextBoxes(Control parent)
{
foreach (Control child in parent.Controls)
{
TextBox textBox = child as TextBox;
if (textBox == null)
ClearTextBoxes(child);
else
textBox.Text = string.Empty;
}
}

private void ClearButton_Click(object sender, EventArgs e)
{
ClearTextBoxes(tabControl1.SelectedTab);
}

4 für die Antwort № 2

Sie versuchen, jedes Steuerelement zu durchlaufen, von denen einige keine TextBox-Steuerelemente sind.

Sie können verwenden OfType um anzugeben, für welche Steuerelemente Sie sich interessieren, stattdessen:

foreach (TextBox t in tabControl1.SelectedTab.Controls.OfType<TextBox>())
{
t.Clear();
}

2 für die Antwort № 3

Sie erhalten alle Steuerelemente (nicht nur die TextBoxen) in der foreach-Schleife

versuche so etwas:

foreach (Control t in tabControl1.SelectedTab.Controls)
{
if(t is TextBox)
((TextBox)t).Clear();
}

0 für die Antwort № 4

Nicht alle Steuerelemente sind Textfelder. Mach es so:

private void ClearButton_Click(object sender, EventArgs e)
{
foreach (var control in tabControl1.SelectedTab.Controls)
{
if(control is TextBox)
{
TextBox t = (TextBox)control;
t.Clear();
// or short:
// ((TextBox) control).Clear();
}
}
}