【问题标题】:VSTO for Outlook 2010 returning nothing instead of contact?VSTO for Outlook 2010 什么都不返回而不是联系?
【发布时间】:2015-03-05 23:07:16
【问题描述】:

我正在尝试在 Outlook 2010 联系人视图中创建一个右键菜单,该菜单会返回联系人的所有电话号码

我已经输入了以下 XML:

<contextMenu idMso="ContextMenuContactItem">
  <button id="MyContextMenuContactItem"
      imageMso="AutoDial"
      label="Click to dial"
      onAction="OnMyButtonClick"/>
</contextMenu>

当我右键单击时,这会正确显示联系人列表上的右键单击项目。到目前为止,我已将以下代码添加到 onAction:

Public Sub OnMyButtonClick(ByVal control As Office.IRibbonControl)
    Dim card As Office.IMsoContactCard = TryCast(control.Context, Office.IMsoContactCard)
    If card Is Nothing Then
        MsgBox("Nothing")
    Else
        MsgBox("We have a card")
    End If
End Sub

问题就在这里——我总是一无所获。例如,理想情况下,我需要获得“商务电话”。

【问题讨论】:

    标签: vb.net vsto outlook-2010


    【解决方案1】:

    这里有一些 C# 代码可以访问您在联系人文件夹中选择的 ContactItem 对象。我知道你的是 VB,但由于它们都可以访问相同的对象模型,所以应该只是改变语法的问题。

    public void OnMyButtonClick(Office.IRibbonControl control)
    { 
        if (control.Context is Outlook.Selection)
        {
            Outlook.Selection selected = control.Context as Outlook.Selection;
    
            var x = selected.GetEnumerator();
            x.MoveNext();
            if (x.Current is Outlook.ContactItem)
            {
                Outlook.ContactItem card = x.Current as Outlook.ContactItem;
                Debug.Print(card.FirstName + "'s phone number: " + card.BusinessTelephoneNumber);
            }
        }
    }
    

    【讨论】:

    • 对于 VB:暗淡选择为 Outlook.Selection = TryCast(control.Context, Outlook.Selection) 暗淡 x 作为 System.Collections.IEnumerator = selected.GetEnumerator x.MoveNext() 暗淡卡片作为 Outlook。 ContactItem = TryCast(x.Current, Outlook.ContactItem) MsgBox(card.FirstName)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 2011-08-22
    • 1970-01-01
    • 2012-06-18
    相关资源
    最近更新 更多