我正在使用jabber-net opensource库开发聊天应用程序.. 我的目的是在消息来临时显示一个表单(聊天窗口)。 但是当我使用这段代码时,Form会出现在任务栏中,而不是完美渲染...... 看起来像这样...更多我只能在鼠标悬停任务栏上的图标时看到表格(Hail Windows 7)......任何形式都是这样......
我的代码就是这个......
public jabber.client.JabberClient jabberClient1;
jabberClient1.User = UserName;
jabberClient1.Password = Password;
jabberClient1.Resource = resource;
jabberClient1.AutoRoster = true;
jabberClient1.OnMessage += new MessageHandler(jabberClient1_OnMessage);
private void jabberClient1_OnMessage(object sender, jabber.protocol.client.Message msg)
{
try
{
chatWindow chw = new chatWindow();
chw.Left = 0;
chw.Top = 0;
chw.TopMost = true;
//chw.LoadChat(msg.From.User, msg.From.Bare, "0");
//chw.SetMessage(msg);
chw.Show();
}
}
答案 0 :(得分:1)
你必须使用chw.ShowDialog()
或使用if invokerequired
private delegate void dlgInvokeRequired();
public void InvokeMethode()
{
if (this.InvokeRequired == true)
{
dlgInvokeRequired d = new dlgInvokeRequired(InvokeMethode);
this.Invoke(d);
} else
{
chatWindow chw = new chatWindow();
chw.Left = 0;
chw.Top = 0;
chw.TopMost = true;
//chw.LoadChat(msg.From.User, msg.From.Bare, "0");
//chw.SetMessage(msg);
chw.Show();
}
}
答案 1 :(得分:1)
我自己解决了...... 我必须使用
JabberClient1.InvokeControl = FormInstance;
并且,应该在聊天窗口出现之前显示FormInstance .... 即,它可以是联系窗口(名册)....