Powolne działanie dynamicznie dodawanych TextBoxów do Panelu

0

Mam w aplikacji panel, na którym są 34 tableLayouty (każdy po 10 komórek) i w te tableLayouty dynamicznie wpisuje textboxy, czyli jest ich około 300. Cały panel jest przywoływany zdarzeniem klikniecia w button. No i gdy już kliknę ten button panel się przywołuje a textboxy za każdym razem jakby się "renderowały", ładują się około 3-4 sekund. To chyba nie jest normalne? Czy przy takiej ilości textboxów raczej tak?

Metoda generowania TB:

public void make(TextBox[] textBoxArray, Control layoutPanel)
        {
            
            for (int i = 0; i < textBoxArray.Length - 1; i++)
            {
                textBoxArray[i] = new TextBox();
                
                
                textBoxArray[i].Visible = true;
                textBoxArray[i].Font = new Font("Microsoft Sans Serif", 20);
                textBoxArray[i].TextAlign = HorizontalAlignment.Center;
                //textBoxArray[i].Name = "textBox" + i;
                textBoxArray[i].Text = "0";
                layoutPanel.Controls.Add(textBoxArray[i]);
            }

poprawienie znacznika <code class="csharp"> - Furious Programming

0

Podaj może więcej kodu, i wyjaśnij co to znaczy że „panel jest przywoływany”.
W podanym kodzie nie widzę nic złego, chociaż to new Font() wyciągnąłbym do zmiennej przed pętlą, albo w ogóle do czegoś bardziej globalnego. Zawsze to mniej obiektów.

0

textBoxArray[i].Font = layoutPanel.Font; jeżeli Control nie posiada jeszcze Font to przekaż jako coś wyższego w hierarchii

0
Azarien napisał(a):

Podaj może więcej kodu, i wyjaśnij co to znaczy że „panel jest przywoływany”.

Te tableLayoutpanele są umieszczone na panelu, który chowam lub pokazuje na głównej Formie.

A może powodem jest to, że wszystkie te layoutPanele wypełniam nie w pętli tylko za każdym razem wywołując tę samą metodę z innymi parametrami (nazwami tabel Textboxow).

0
litrmleka napisał(a):

A może powodem jest to, że wszystkie te layoutPanele wypełniam nie w pętli tylko za każdym razem wywołując tę samą metodę z innymi parametrami (nazwami tabel Textboxow).

Może lepiej pokaż kod.
Jak często tworzysz te TextBoxy?

0
textBox.BorderStyle= BorderStyle.None 

załatwiło sprawę. Ale sprawdzę jeszcze metodę z tego linka.

1 użytkowników online, w tym zalogowanych: 0, gości: 1