Witam,
Piszę komunikator oparty na socketach i połączeniu TCP
Komunikator oparty jest na wielowątkowości i każda rozmowa osoby A z B odbywa się w nowym wątku i z założenia oknie....
Obecnie mam napisane wyświetlanie tekstu w oddzielnym oknie. Można by rzec, że nawet działa, jednak jest pewien problem z okienkami od rozmów. Jest to całkiem nowa forma, która (w rozmowie) rozróżniana jest za pomocą słownika.
Poniższy kod odpowiada za sprawdzenie czy okno jest otwarte, jeśli nie to je otwiera.
Obecnie wyświetla wiadomości, ale tylko w przypadku jak już otwarte okno jest (pierwszej wiadomości która otwiera okno nie wyświetla) I mam pytanie czy jeśli na koniec elsa dopiszę rozmowy[nadawca].wyswietlanie_tekstu(tekst22); to będzie to poprawne, czy jest jakiś lepszy sposób, ładniejszy i bardziej poprawny wykonania?
if (rozmowy.ContainsKey(nadawca))
{
rozmowy[nadawca].wyswietlanie_tekstu(tekst22);
}
else
{
Form2 TheForm;
TheForm = new Form2();
TheForm.Text=("Rozmowa z "+nadawca);
rozmowy.Add(nadawca, TheForm);
TheForm.Show();
}
Ogólnie wiadomości przychodzą, tworzone są w razie potrzeby nowe okna, tylko że one zachowują się tak jakby "wisiały", tzn jeśli mam na nim jakiegoś buttona, to go nie użyję bo okienko zachowuję się jakby wisiało, ale tekst w richtexboxie wyświetla.
Nie mam zielonego pojęcia co zrobić, żeby "ożywić" okienka rozmów, bo docelowo w nich będzie prowadzona cała rozmowa, a teraz nie jest sposób w richtexboxie coś napisać i przesłać dalej. Proszę o pomoc, co może być przyczyną tego i jak to rozwiązać.
Wielki dzięki.