lista labeli

0

Hej

chciałbym z poziomu kodu utworzyć na formie kilka labeli, których ilość uzależniłbym od wyborów usera. Jeśli mam coś takiego:

        public  void Wyswietl_labele(int wierszy, int kolumn)
        {
            for (int x = 0; x > wierszy; x++)
            {
                for (int y = 0; x > kolumn; y++)
                {
                    Label nowy_label = new Label();
                    nowy_label.Text = ".";
                    nowy_label.Location = new System.Drawing.Point(x * 10, y * 10);
                    this.Controls.Add(nowy_label);
                }
            }
        }

to mam klasę, która powinna w założeniach rysować labeli tyle ile w nagłówku klasy poda się wierszy i kolumn. No ale w praktyce powstaje jedna instancja klasy Label i mam jedną kropkę.
No więc rozumiem, że muszę zrobić jakąś klasę/list/labeli i piszę drugą klasę:

        public class Labele<T>
        {
            public Labele(T label1)
            {
                Label1 = label1;
            }
            public T Label1 { get; set; }
        }

i w tym momencie zaczynam czuć, że nie ogarniam tego. Zmieniam więc klasę pierwszą Wyswietl_labele np. tak:

        public  void Wyswietl_labele(int wierszy, int kolumn)
        {
            Labele<Label> zly_label = new Labele<Label>();

            for (int x = 0; x > wierszy; x++)
            {
                for (int y = 0; x > kolumn; y++)
                {
//                    zly_label.Label1.Add();  (???)
                    zly_label.Label1.Text = ".";
                    zly_label.Label1.Location = new System.Drawing.Point(x * 10, y * 10);
                    this.Controls.Add(zly_label.Label1);
                }
            }
        }

Wydaje mi się więc, że mam drugą klasę Labele<T>, mam pierwszą klasę zmodyfikowaną do użytkowania z drugiej klasy, ale nie potrafię tworzyć kolejnych obiektów pierwszej klasy.

Opisałem po krótce swój problem, tak jak go rozumiem. Jeśli ktoś może pomóc, dziękowałbym pięknie, bo spędziłem nad tym kilka godzin i sam nie wymyśliłem jeszcze rozwiązania.

0

pierwszy kod jest ok, tylko petle for sa ... zle

for (int x = 0; x > wierszy; x++)
jesli iterujesz od 0 a wierszy jest wiecej niz 0 to ta petla sie nie wykona

for (int y = 0; x > kolumn; y++)
tu podobnie i dodatkowo warunek sprawdzany dla x, a nie dla y

warunej w petli for jest warunkiem kiedy kontunuowac, czyli jesli jest spelniony (warunek == true) wykonaj iteracje

czytanie dokumentacji ze zrozumieniem:
http://msdn.microsoft.com/en-us/library/ch45axte.aspx

0

.. i pytanie - po co co klasa Labele<T> skoro:

  • potrzebujesz tylko Label'i - nie innych elementów GUI
  • w tej klasie jest tylko 1 pole T ... to zamiast Labele<T> nie lepiej po prostu T .. - (jeśli już musi być generycznie)

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