VSTO自定义文件夹类型

时间:2012-01-06 21:18:22

标签: .net vsto outlook-2007

是否可以使用VSTO for Outlook 2007创建自定义文件夹类型? (即类似于olFolderContacts的新文件夹类型等)

理想情况下,我想要的是有一个文件夹,在选中后,它会在主Outlook窗口(收件箱和预览窗格所在的位置)中创建一个新的表单区域,并显示一个WPF用户控件。

由于

类似于:

enter image description here

我发现该图片同时试图解决这个问题:http://www.add-in-express.com/add-in-net/outlook-regions-basics.php

3 个答案:

答案 0 :(得分:0)

我能做的最接近的事情是:

  • 在outlook上创建文件夹(我将其命名为login):

  • 然后右键单击并设置其主页:

    enter image description here

  • 然后当我选择该文件夹或后面的代码时,我可以选择它,我的外观如下:

    enter image description here

如果我可以使用wpf表单或自定义区域执行相同操作,那将是很好的。现在我必须使用websockets或其他机制来与该控件进行通信。

答案 1 :(得分:0)

由于Outlook使用Internet Explorer作为其浏览器,因此您可以获得SilverLight的本机支持。您是否有可能将内容嵌入SilverLight网页,然后将其设置为文件夹的主页? WPF和SL有很多共同点,所以这可能是你的解决方案。

答案 2 :(得分:0)

找到解决方案。唯一需要注意的是,我需要购买Advanced Outlook regions for VSTO并且花费我100美元。如果您购买该产品,您就是这样做的:

<强> 1。在vistual studio of type(Outlook 2010加载项)上创建一个新项目我命名了我的项目OutlookAddIn1

<强> 2。向项目添加新项目(我需要购买的产品) enter image description here

第3。当您选择该项目向导时,请选择以下选项: enter image description here

<强> 4。遵循所有默认值,直到向导完成(单击下一步,下一步等完成)

<强> 5。你有一个窗体。要放置WPF内容,您需要添加ElementHost控件。有一个关于如何在Windows窗体上托管wpf用户控件的教程日志。为了保持这个答案不长,我不会说明如何。

<强> 6。对于这个答案的演示,我只需在该表单上放置一个按钮: enter image description here

<强> 7。按下该按钮,我将隐藏该表单并显示该文件夹的缺失视图。所以这是该按钮背后的代码:

    private void button1_Click(object sender, EventArgs e)
    {
        // disable the form that id does not show up
        Globals.ThisAddIn.ADXOlForm1Item.Enabled = false;

        // get the current selected folder
        var thisFOlder = Globals.ThisAddIn.Application.ActiveExplorer().CurrentFolder;

        // remove the webview pane in order to show the main folder view instead
        thisFOlder.WebViewOn = false;
        thisFOlder.WebViewURL = string.Empty;

        // RESET FOLDER BY SELECTING A DIFFERENT ONE THEN THE SAME ONE
        NameSpace nameSpace = Globals.ThisAddIn.Application.GetNamespace("MAPI");
        MAPIFolder outboxFolder = nameSpace.GetDefaultFolder(OlDefaultFolders.olFolderOutbox);
        Globals.ThisAddIn.Application.ActiveExplorer().CurrentFolder = outboxFolder; // CHANGE FOLDER TO A DIFFERNT ONE
        System.Windows.Forms.Application.DoEvents();
        Globals.ThisAddIn.Application.ActiveExplorer().CurrentFolder = thisFOlder; // SET INBOX AGAIN

        // remeember to release objects
        Marshal.ReleaseComObject(nameSpace);
        Marshal.ReleaseComObject(outboxFolder);
        Marshal.ReleaseComObject(thisFOlder);

        this.Close();
    }

<强> 8。当我在选择Mail类型的任何文件夹时看到我运行该项目备注时: enter image description here

<强> 9。如果我按下该按钮,我将显示我选择的文件夹的默认视图

我现在唯一的问题是该视图显示了每个MailItem类型的文件夹。你可以在第一个wizzard上选择一个不像Jurnal那样常见的不同文件夹类型。然后在代码后面,您可以选择要显示该表单的jurnal文件夹。