Wątek przeniesiony 2015-10-21 14:54 z C# i .NET przez ŁF.

Dostęp do Listboxa wewnątrz metody innej klasy

0

Witam Was, mam mały problem. Może błahy, może nie... :) . Otóż tworzę aplikację okienkową która de facto składa się z jednej formy w której znajdują się 3 TabControl ale to nie istotne w tej chwili. Chodzi mi o to że aplikacja ta jest asynchronicznym serwerem i chcę na poszczególnych etapach połączenia z klientem informować o tym użytkownika w ListBox (coś w stylu "Połączono z klientem na porcie: ").

Gdy klikniemy w button "Połącz" przechodzimy do metody która znajduje się w innej klasie. I tutaj moje pytanie: Jak dostać się do kontrolki ListBox z poziomu tej innej klasy ? Dodam że klasa ta nie jest inną formą. Coś w stylu:

listBox1.Items.Add("Tutaj informacja o połączeniu z klientem"); 

Nie wiem, stworzyć statyczne pole klasy Form1 + konstruktor a następnie wpisywać w instancji klasy co się chcę i potem odczytywać te dane w klasie Form1 ?

Pisanie tej aplikacji to dla mnie trening zrozumienia aspektów programowania obiektowego więc na pewno jeszcze czegoś nie wiem albo źle to obmyślam (nie rozumiem :) ). Liczę na jakieś rady. Pozdrawiam

0

Najprościej będzie jeżeli listBox1 przekażesz przez konstruktor do klasy w której go chcesz wykorzystywać. Jednak jeżeli operacja dodawania elementów do listbox-a będzie odbywać się w innym wątku dostaniesz wyjątek, więc będziesz musiał obsłużyć go w odpowiedni sposób. Dodatkowo nie jest to zalecany styl programowania.

Ja tobie bym zalecał utworzenie zewnętrznej klasy Log która będzie thread-safe. Wtedy wszędzie gdzie będziesz chciał coś logować będziesz używać jednej instancji loggera. Natomiast na formatce będzie co jakiś czas sprawdzał czy coś zostało dodane lub użyjesz wzorzec obserwatora / streamingu.

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