2016-01-27 16 views
7

Dla przykładumożna uruchomić wiele kontroli, ale tę samą metodę w C#

txtUnitTotalQty.Text = ""; 
txtPrice.Text = ""; 
txtUnitPrice.Text = ""; 
lblTotalvalue.Text = ""; 

do czegoś

(txtUnitTotalQty, txtPrice, txtUnitPrice, lblTotalvalue).Text = ""; 
+0

Można również napisać metodę akceptowania formantów jako tablicy parametrów i wartości, ustawić wartości wszystkich macierzy param w tej funkcji. – Anil

+1

Proszę przyjąć odpowiedź, aby podziękować osobom, które spędzają czas, aby Ci pomóc:) –

+1

@Fabien OK dziękuję za przypomnienie mi –

Odpowiedz

9

Można to zrobić tak:

txtUnitTotalQty.Text = txtPrice.Text = txtUnitPrice.Text = lblTotalvalue.Text = string.Empty; 

Albo można napisać metoda dla niego:

public void SetText(params TextBox[] controls, string text) 
{ 
    foreach(var ctrl in controls) 
    { 
     ctrl.Text = text; 
    } 
} 

wykorzystania tego będzie:

SetText(txtUnitTotalQty, txtPrice, txtUnitPrice, lblTotalvalue, string.Empty); 
+0

Dziękuję bardzo! –

1

Innym możliwym sposobem, aby napisać to samo z mniejszym funkcji jest

void ClearAllText(Control con) 
{ 
    foreach (Control c in con.Controls) 
    { 
     if (c is TextBox) 
     ((TextBox)c).Clear(); 
    } 
} 
+0

Twój kod wykona nieskończone wywołanie rekursywne, jeśli kontrola nie jest polem tekstowym .... – Viru

+0

Dzięki za połów. Zmieniłem kod. –

1

można zrobić coś takiego:

foreach (var txt in new[] { txtUnitTotalQty, txtPrice, txtUnitPrice, lblTotalValue}) 
{ 
    txt.Text = ""; 
} 
+2

Ponieważ formanty są innego typu, 'nowy []' nie będzie w stanie automatycznie wybrać typu dla tablicy, więc musisz jawnie powiedzieć 'nowa kontrola [] {...}' – Richard

3

Ponieważ .Text jest właściwością wspólnej klasy bazowej Control, możesz iterować na liście:

new List<Control> { txtUnitTotalQty, txtPrice, txtUnitPrice, lblTotalvalue }.ForEach(c => c.Text = ""); 
+0

OMG DZIĘKUJEMY ZA NOWA WIEDZA –

Powiązane problemy