您需要處理來自XMPP連接的電子名片事件和響應:
private void vcardToolStripMenuItem_Click(object sender, EventArgs e)
{
RosterNode node = rosterControl.SelectedItem();
if (node != null)
{
frmVcard f = new frmVcard(node.RosterItem.Jid, XmppCon);
f.Show();
}
}
以上是從AGSXMPP下載miniclient解決方案的例子。請注意,它發生在用戶爲用戶請求VCARD時。不過,您可以隨時啓動該請求。
private void VcardResult(object sender, IQ iq, object data)
{
if (InvokeRequired)
{
// Windows Forms are not Thread Safe, we need to invoke this :(
// We're not in the UI thread, so we need to call BeginInvoke
BeginInvoke(new IqCB(VcardResult), new object[] { sender, iq, data });
return;
}
if (iq.Type == IqType.result)
{
Vcard vcard = iq.Vcard;
if (vcard!=null)
{
txtFullname.Text = vcard.Fullname;
txtNickname.Text = vcard.Nickname;
txtBirthday.Text = vcard.Birthday.ToString();
txtDescription.Text = vcard.Description;
Photo photo = vcard.Photo;
if (photo != null)
picPhoto.Image = vcard.Photo.Image;
}
}
}
也就是說當有人從XMPP請求電子名片信息和IQ類型的正確數據匹配會發生什麼。您可以從thenpull的vcard.Photo
照片。
您觸發與拉:
VcardIq viq = new VcardIq(IqType.get, new Jid(jid.Bare));
con.IqGrabber.SendIq(viq, new IqCB(VcardResult), null);
第一行有請求到XMPP服務器,即電子名片的形式使用要求的用戶信息。
第二行有,建立另一個採集卡(各種各樣的回調),該表單使用等待信息到達,然後解析出必要的信息。在這種情況下,採集是一種新的形式,使主應用程序不必擔心解析這些信息。
您可以通過提取AGSXMPP zip文件到本地驅動器,並期待在Samples \ VS2008 \ miniclient文件夾看看整個源。
對於窗口的方式使用此代碼:寫真照片= vcard.Photo ; 如果(照片!= NULL) picPhoto.Image = vcard.Photo.Image;所以,如果我使用WPF,我該怎麼辦? – ppp