Outlook和VSTO的表单区域删除WebViewPane

时间:2013-12-10 19:03:18

标签: c# vsto outlook-addin

我刚购买:http://www.add-in-express.com/outlook-regions/

我购买该产品的原因是因为我需要在选择特定文件夹时在outlook主视图上显示自定义表单。我通过以下方式设法做到了这一点:

  1. 创建一个新的Project int visual studio(Outlook 2010加载项)

  2. 创建项目后,我添加: enter image description here

  3. 因为我希望该表单显示在邮件的主文件夹视图中(替换所有其他视图),我选择此选项: enter image description here

  4. 我点击下一步并按照所有默认设置创建表单。

  5. 创建该表单后,我添加了我需要的按钮和图像。在这个例子中,我将只添加一个按钮。

  6. 当我运行outlook并选择我的收件箱文件夹时,显示的是: enter image description here (换句话说,每当我选择一个类型为olMailItem的文件夹时,表单会显示出来)

  7. 所以现在我解决了在“主视图”上显示我的自定义表单的目标

  8. 现在我的问题是如何才能在特定文件夹上显示该表单。例如,我不想在选择“收件箱”文件夹时显示该表格,但我想在选择“发件箱”文件夹时显示该表格

    让我们尝试隐藏表单并在单击按钮时显示默认视图。

    为了解决我遇到的问题:http://www.add-in-express.com/forum/read.php?FID=5&TID=4540

    我已经完成了相同的步骤,但表格又出现了!换句话说,按钮背后的代码如下所示:

    private void button1_Click(object sender, EventArgs e)
    {
        // get current folder in this case its inbox the one that is selected
        MAPIFolder currentFolder = Globals.ThisAddIn.Application.ActiveExplorer().CurrentFolder;
        Globals.ThisAddIn.ADXOlForm1Item.FolderName = string.Empty;
    
        // clear web properties DO NOT SHOW WEB VIEW
        currentFolder.WebViewURL = string.Empty;
        currentFolder.WebViewOn = false;
    
        // 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 = currentFolder; // SET INBOX AGAIN
    }
    

    当我运行该代码时,默认视图显示1秒,然后它被表单替换!


    -------------------------------------------编辑--- ----------------------------------------

    当我添加表单区域时,Addin Express会为我创建的表单添加ADXOlFormsManagerADXOlFormsCollectionItem。根据你的回答我做了:

    #region ADXOlForm1
    
        // TODO: Use the ADXOlForm1Item properties to configure the region's location, appearance and behavior.
        // See the "The UI Mechanics" chapter of the Add-in Express Developer's Guide for more information.
    
        ADXOlForm1Item = new ADXOlFormsCollectionItem();
    
        ADXOlForm1Item.FolderName = "MyCustomFolder"; // <---- ADDED THIS LINE HOPING TO SHOW THIS FORM ONLY WHEN THAT FOLDER IS SELECTED
    
        ADXOlForm1Item.ExplorerLayout = ADXOlExplorerLayout.WebViewPane;
        ADXOlForm1Item.ExplorerItemTypes = ADXOlExplorerItemTypes.olMailItem;
        ADXOlForm1Item.UseOfficeThemeForBackground = true;
        ADXOlForm1Item.FormClassName = typeof(ADXOlForm1).FullName;
        this.FormsManager.Items.Add(ADXOlForm1Item);
    #endregion
    

    我希望该表单只显示在MyCustomFolder中,但在选择ADXOlExplorerItemTypes.olMailItem类型的任何文件夹时会显示。也许我做错了什么......

    换句话说,我希望只有MAPIFolder MyCustomFolder文件夹具有属性

    WebViewOn=true;
    WebViewURL = "...AppData\Local\Temp\AddinExpress\ADXOlFormGeneral.html"
    

    但是当我浏览Outlook中的所有文件夹时,即使指定了ADXOlForm1Item.FolderName = "MyCustomFolder";

    ,我也可以看到所有这些文件都具有这些属性

1 个答案:

答案 0 :(得分:2)

感谢您选择加载项快速区域。

我理解前景的主要观点&#34;作为Outlook启动时显示的文件夹。默认情况下,该文件夹是邮件存储的顶级文件夹。请注意,这可以更改,请参阅文件|选项|高级|在此文件夹中启动Outlook。我使用此设置,以便我的Outlook在启动时向我显示收件箱。

以下是来自 Outlook窗体的上下文敏感度部分的引文,请参阅开发PC上{Add-in Express} \ Docs \文件夹中的PDF文件:

  

ADXOlFormsCollectionItem 提供了许多属性,允许指定表单的上下文设置。比如说,您可以指定要为其显示表单的项类型。请注意,对于资源管理器,您指定的项类型将与当前文件夹的默认项类型进行比较。此外,您还可以在 FolderName FolderNames 属性中指定要为其显示表单的文件夹的名称;这些属性也适用于Inspector窗口 - 在这种情况下,将检查Outlook项目的父文件夹。文件夹路径的一个示例是&#34; \ Personal Folders \ Inbox&#34;。

     

FolderName 中的特殊值是星号(&#39; *&#39;),表示&#34;所有文件夹&#34;。您还可以指定要为其显示表单的邮件类。请注意,使用 OR 布尔运算处理 ADXOlFormsCollectionItem 的所有上下文相关属性。也就是说,指定例如文件夹名称扩展,但不限制,将显示您的表单的上下文列表。

也就是说,如果您需要显示给定文件夹的表单,请在 FolderName / * FolderNames *属性中指定该文件夹的路径。


来自白俄罗斯(GMT + 3)的问候,

安德烈·斯莫林,加入快递团队负责人