private void abi3_Click(object sender, EventArgs e)//gonder
{
foreach (var item in ContactResultsData.SelectedItems)
{
Contacts cons = new Contacts();
cons.SearchCompleted += new EventHandler<ContactsSearchEventArgs> (Con_SearchCompleted);
cons.SearchAsync(item.ToString(), FilterKind.DisplayName, null);
}
}
void Con_SearchCompleted(object sender, ContactsSearchEventArgs e)
{
foreach (var contact in e.Results)
{
if (contact.PhoneNumbers.Count() > 0)
{
textBox1.Text = textBox1.Text + ";" + contact.PhoneNumbers.FirstOrDefault();
}
}
我正在使用此代码获取联系人的电话号码。我有一个列表视图,所有联系人都在其中。然后我多选并显示名称和电话。
但例如,我的一个联系人姓名是"亚历克斯",另一个是"亚历克斯·德索萨"。当我选择"亚历克斯"和"亚历克斯·德索萨"时,这个程序只得到了亚历克斯的两次号码。没有显示亚历克斯·德·索萨的号码。
我该如何解决这个问题。谢谢
要回答评论中更新的问题,您可以查看联系人的DisplayName
是否与搜索查询完全匹配。
查询作为对象的状态传入,如下所示
cons.SearchAsync(item.ToString(), FilterKind.DisplayName, item.ToString());
然后读取SearchCompleted
事件中的状态,看看它是否完全匹配,如下所示
if (contact.PhoneNumbers.Count() > 0 && String.Equals(contact.DisplayName, e.State.ToString()))