タスク管理アプリケーションを作成しました。2人のユーザーが特定のタスクについてチャットできる機能を実装したいと思いました。
Form1
送信された新しいメッセージがないかデータベースをチェックするタイマーがあります。新しいメッセージが見つかると、メッセージを示すチャットフォームが表示されます。
今まで、すべてが期待どおりに機能していますが、問題は1つだけです。
問題: 新しいメッセージが初めて見つかるとチャットウィンドウが表示されますが、別の新しいメッセージが見つかると別のウィンドウが表示され、新しいメッセージごとにチャットウィンドウの新しいインスタンスが作成されます。
私が使用しているコード:
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.Show();
:frm14.ShowDialog();
新しいメッセージを受信するとチャットウィンドウ(form14)が表示され、同じユーザーから別のメッセージを受信すると新しいチャットウィンドウが表示されないことに気付きましたが、問題はチャットウィンドウを閉じた後に表示されないことです新しいメッセージを受信しても表示されなくなります。
チャットウィンドウ(Form14.Text)をユーザーのフルネームに変更し、次にメッセージを受信したときに、特定のウィンドウが既に開いているかどうかを確認し、開いていない場合は表示します。.Show()
メソッドを使用してフォームを作成します。
これは、新しいメッセージを受信してすでに開いている場合にウィンドウが表示されないようにするための適切な方法ですか?テキスト(タイトルバーのテキスト)に従ってウィンドウが開いているかどうかを確認するにはどうすればよいですか?
私の質問を読んでくれてありがとう。どんな助けでも大歓迎です