[C#] Form po otevření zamrzne – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

[C#] Form po otevření zamrzne – .NET – Fórum – Programujte.com[C#] Form po otevření zamrzne – .NET – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
RiZe0
Newbie
18. 11. 2008   #1
-
0
-

Pracuji na svém IM klientovi a serveru a dostal jsem se k poněkud zvláštnímu problému. Pokud klient číslo 1 poklepe na položku svého kontakt listu, spustí se metoda ContactListItemClick (kód níže), která otevře formulář MessageForm. Klient 1 napíše zprávu, která se přes server pošle a dorazí ke klientu číslo 2. Eventem je zpráva odchycena a je zavolána metoda MessageNotify, která provede prakticky to samé, jako metoda ContactListItemClick. Vytvoří instanci formuláře MessageForm a zobrazí ho, nicméně. Po kompilaci klient 1 otevře přes kontakt list formulář MessageForm, bez problémů, napíše zprávu a pošle, klient na druhé straně zprávu odchytí a zobrazí formulář MessageForm ale ten neodpovídá, jeho prvky nejsou vykreslené, pouze je nastaveno pozadí. Má někdo nějaký návrh, protože už opravdu netuším co s tím. Děkuji.



/// <summary>
/// Dvojklik na položku Contact Listu vyvolá otevření okna pro
/// psaní zpráv. Jemu se vyplní titulek podle jména kontaktu.
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
public void ContactListItemClick(Object sender, EventArgs args)
{
ContactListItem Client = sender as ContactListItem;

/**
* Okno je již otevřené, předáme mu focus
*/
if (Messages.ContainsKey(Client.Client))
{
MessageForm Window = Messages[Client.Client] as MessageForm;
Window.Focus();
}
else
{
/**
* Předáme ref., třídu pro komunikaci, jméno klienta a status a okno uložíme do Hashtable
*/
MessageForm Window = new MessageForm(this, Server, Client.Client, Client.Status);
Messages.Add(Client.Client, Window);
Window.Show();
}
}

/// <summary>
/// EventHandler pro přijetí zprávy
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
public void MessageNotify(Object sender, MessageEventArgs args)
{
if (Messages.ContainsKey(args.Client))
{
MessageForm Window = Messages[args.Client] as MessageForm;
Window.MessageReceive(args.Time, args.Message);
}
else
{
if (ContactList.Clients.ContainsKey(args.Client))
{
SimpleClient Client = ContactList.Clients[args.Client] as SimpleClient;
MessageForm Window = new MessageForm(this, Server, args.Client, Client.Status);

Messages.Add(Client.Name, Window);
Window.MessageReceive(args.Time, args.Message); // Předáme čas přijetí serverem a text zprávy
Window.Show(); // Po zobrazení formuláře jeho okno zamrzá a neodpovídá
}
}
}

Nahlásit jako SPAM
IP: 85.207.186.–
Reklama
Reklama
rudolf_franek0
Stálý člen
19. 11. 2008   #2
-
0
-

Provadi MessageForm nejakou dalsi inicializaci napriklad pri eventu FormLoad, ci podobne ?

Nahlásit jako SPAM
IP: 90.178.66.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 42 hostů

Podobná vlákna

Otevření — založil dc195

Otevření souboru — založil dc195

Otevreni nahledu — založil werixon

Otevření jpg — založil Jakub Vojáček

Otevření souboru — založil Sajmi

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý