Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[c#] Automatyczna zmiana właściwości wielu elementów.

revolt 02 Gru 2010 14:27 1548 2
  • #1 02 Gru 2010 14:27
    revolt
    Poziom 34  

    Mam takie pewnie głupie pytanie:
    Mam na formatce np. button1, button2 .. button30. Czy można jakoś szybko zmienić np. text we wszystkich automatycznie? Chyba pętla for i button[i].text działać nie będzie :)

    0 2
  • Pomocny post
    #2 02 Gru 2010 14:37
    arnoldziq
    Moderator Programowanie

    Może w ten sposób ?

    Code:
    Control[] found = this.Controls.Find("button1");

    Albo tak :
    Code:
    var o = Sys.Application.findComponent(id, parent)

    Link

    0
  • Pomocny post
    #3 02 Gru 2010 14:43
    paczek86
    Poziom 13  

    revolt napisał:
    Mam takie pewnie głupie pytanie:
    Mam na formatce np. button1, button2 .. button30. Czy można jakoś szybko zmienić np. text we wszystkich automatycznie? Chyba pętla for i button[i].text działać nie będzie :)

    Czy przyciski button1, button2, ... button30 są jedynymi elementami klasy Button zawartymi na formatce? Jeżeli tak, można wykorzystać pętlę
    Code:
    foreach (var c in this.Controls)
    
    {
        if (c is Button)
        {
            Button b = c as Button;
            b.Text = "Zmieniony tekst";
        }
    }


    W przypadku gdyby na formatce znajdowały się jeszcze inne przyciski, którym nie będziesz chciał zmieniać nazwy, można postąpić na kilka sposóbów. Jeden z nich to zgrupowanie przyciski button1 ... button30 w jednym kontenerze (np. panelu) i odwoływanie się w pętli zamiast do wszystkich kontrolek formatki
    Code:
    this.Controls

    tylko do kontrolek zawartych w panelu
    Code:
    pnlJakisPanel.Controls
    .

    Można byłoby ewentualnie sprawdzać nazwę przycisku (właściwość Name) np. przy pomocy wyrażenia regularnego. Inne rozwiązanie to wypełnienie właściwości
    Code:
    Tag
    przycisków, którym chcesz zmieniać nazwę, jakąś stałą wartością i sprawdzanie jej w warunku wewnątrz pętli - coś na kształt
    Code:
    if (b.Tag.ToString() == "zm")
    
                            b.Text = "Zmieniony tekst";

    0