私はタスクマネージメントアプリケーションを作成しました。私は、2人のユーザーが特定のタスクについてチャットする機能を実装したいと考えていました。フォームがすでに表示されているかどうかを確認する適切な方法はありますか?
Form1
私は、送信された新しいメッセージのデータベースをチェックするタイマーを持っています。新しいメッセージが見つかると、メッセージを示すチャットフォームが表示されます。
これまでのところ、すべてが正常に機能していましたが、問題は1つのみです。
問題: を初めて見出し、新しいメッセージたら、チャットウィンドウが表示されますが、別の新しいメッセージが発見された場合、別のウィンドウが表示され、それぞれの新しいメッセージのために私はチャットの新しいインスタンスを持っていますウィンドウが作成されました。
私が使用しているコード:私は、新しいメッセージを受信したときに、チャットウィンドウ(form14)があることに気づいfrm14.ShowDialog();
でfrm14.Show();
:私はラインを交換しようとした
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();
}
}
同じユーザーから別のメッセージを受信したときに新しいチャットウィンドウは表示されませんが、チャットウィンドウを閉じると新しいメッセージを受信しても表示されなくなるという問題があります。
チャットウィンドウ(Form14.Text)をユーザーのフルネームに変更し、次回のメッセージ受信時に特定のウィンドウが既に開いているかどうかを確認してから開くそれ以外の場合は、.Show()
メソッドを使用してフォームを表示します。
これは、新しいメッセージを受信して開封した場合にウィンドウが表示されないようにする適切な方法ですか?テキスト(タイトルバーのテキスト)に従ってウィンドウが開かれているかどうかを確認する方法は?
私の質問を読んでいただきありがとうございます。どんな助けでも高く評価されます
あなたのコードに取り組んでいます。しかし、すでに他のユーザーとチャットしている間に別のユーザーから新しいメッセージを受け取ったらどうなりますか? –
@ ShikataGaNaiその場合は、おそらくフォームのリスト(システム上のユーザー1人)が必要です。単一のフォームを辞書に置き換えるか、おそらくそれをユーザーの適切なものにすることさえできます。 – ChrisF