A maneira correta de verificar se um formulário já foi exibido?
Eu criei um aplicativo de gerenciamento de tarefas e queria implementar a capacidade de dois usuários conversarem sobre tarefas específicas.
EmForm1
Eu tenho um temporizador que verifica no banco de dados para qualquer nova mensagem enviada. Quando uma nova mensagem é encontrada, o formulário de chat aparece mostrando a mensagem.
Até agora, tudo está funcionando como esperado, mas eu tenho apenas um problema.
O problema : Quando uma nova mensagem é encontrada pela primeira vez, a janela de bate-papo é exibida, mas quando outra nova mensagem é encontrada, outra janela é exibida e, para cada nova mensagem, eu tenho uma nova instância da janela de bate-papo criada.
O código que estou usando:
List<string> tasksToDiscuss = checkForTasksToDiscuss(fullname);
if (tasksToDiscuss.Count > 0) {
// open the chat window directly minimized
Form14 frm14 = new Form14();
frm14.get_from = fullname;
frm14.get_to = tasksToDiscuss[1];
frm14.get_task_id = int.Parse(tasksToDiscuss[3]);
// set message as read
if (setMessageAsRead(tasksToDiscuss[1], fullname, int.Parse(tasksToDiscuss[3])))
{
// now show the chat window minimized
frm14.Show();
}
}
Eu tentei substituir a linha:frm14.Show();
comfrm14.ShowDialog();
Percebi que quando a nova mensagem é recebida, a janela de chat (form14) é mostrada, e quando outra mensagem é recebida do mesmo usuário, nenhuma nova janela de bate-papo aparece, mas o problema é que depois de fechar a janela de bate-papo, não não aparece mais mesmo quando recebo novas mensagens.
O que eu penso fazer é mudar a janela de chat (Form14.Text) para o nome completo do usuário, e na próxima vez que uma mensagem for recebida, eu verifico se a janela específica já está aberta, então não a abra senão mostro formulário usando o.Show()
método.
Esta é a maneira correta de fazer com que a janela não apareça se uma nova mensagem for recebida e for aberta à frente? e Como verificar se uma janela é aberta de acordo com seu texto (texto da barra de título)?
Obrigado por ter tempo lendo a minha pergunta. Qualquer ajuda seria muito apreciada