我創建了一個任務管理應用程序,並且我想實現2用戶聊天關於特定任務的能力。檢查表單是否已顯示的正確方法?
在Form1
我有一個計時器,用於檢查數據庫中是否發送了任何新消息。當找到新消息時,聊天表單將顯示消息。
直到現在,一切都按預期工作,但我只有一個問題。
問題: 一經發現,第一次一個新的消息,聊天窗口出現,但被發現了另一個新的消息時,另一個窗口出現,併爲每個新的消息我聊天的新實例窗口已創建。
我正在使用的代碼:
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();
}
}
我試圖替換行:frm14.ShowDialog();
我注意到,在收到新郵件時,聊天窗口(form14)是frm14.Show();
當收到來自同一用戶的另一條消息時,不會出現新的聊天窗口,但問題是,在我關閉聊天窗口後,即使收到新消息,它也不會再出現。
我想要做的是將聊天窗口(Form14.Text)更改爲用戶全名,並在下一次收到消息時,檢查特定窗口是否已經打開,然後不打開它否則我使用.Show()
方法顯示錶單。
這是否正確的方法來使窗口不會出現,如果收到一條新消息,並打開它?以及如何根據文本(標題欄文本)檢查是否打開一個窗口?
感謝您花時間閱讀我的問題。任何幫助將不勝感激
您的代碼工作正常。但是,如果我在與其他人聊天時收到來自其他用戶的新消息,該怎麼辦? – 2013-02-17 11:52:23
@ShikataGaNai在這種情況下,您可能需要一個表單列表 - 系統上每個用戶一個。將單個表單替換爲字典,或者甚至可以使其成爲用戶的正確方式。 – ChrisF 2013-02-17 11:56:17