Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 在outlook 2013中创建新文件夹时,缺少PR_ATTR_HIDDEN属性_C# 4.0_Outlook Addin_Outlook 2013 - Fatal编程技术网

C# 4.0 在outlook 2013中创建新文件夹时,缺少PR_ATTR_HIDDEN属性

C# 4.0 在outlook 2013中创建新文件夹时,缺少PR_ATTR_HIDDEN属性,c#-4.0,outlook-addin,outlook-2013,C# 4.0,Outlook Addin,Outlook 2013,我正在使用c#开发Outlook 2013加载项。作为需求的一部分,我需要列举所有可见的文件夹。下面是我正在使用的示例代码 public List<Outlook.Folder> EnumerateFolders(Outlook.Folder parentFolder) { List<Outlook.Folder> allFolders = new List<Outlook.Folder>(); EnumerateFolders(parentF

我正在使用c#开发Outlook 2013加载项。作为需求的一部分,我需要列举所有可见的文件夹。下面是我正在使用的示例代码

public List<Outlook.Folder> EnumerateFolders(Outlook.Folder parentFolder)
{
    List<Outlook.Folder> allFolders = new List<Outlook.Folder>();
    EnumerateFolders(parentFolder, allFolders);
    return allFolders;
}

public void EnumerateFolders(Outlook.Folder parentFolder, List<Outlook.Folder> allFolders)
{
    Outlook.Folders childFolders = parentFolder.Folders;
    if (childFolders.Count > 0)
    {
        foreach (Outlook.Folder childFolder in childFolders)
        {
            try
            {
                bool isHidden = childFolder.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x10F4000B");
                if (!isHidden)
                {
                    allFolders.Add(childFolder);
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
            }

            // Call EnumerateFolders using childFolder.
            EnumerateFolders(childFolder, allFolders);
        }
    }
}
公用文件夹列表(Outlook.Folder parentFolder)
{
List allFolders=新列表();
枚举文件夹(父文件夹、所有文件夹);
返回所有文件夹;
}
公用文件夹(Outlook.Folder parentFolder,列出所有文件夹)
{
Outlook.Folders-childFolders=parentFolder.Folders;
如果(childFolders.Count>0)
{
foreach(childFolders中的Outlook.Folder childFolder)
{
尝试
{
bool ishiden=childFolder.PropertyAccessor.GetProperty(“http://schemas.microsoft.com/mapi/proptag/0x10F4000B");
如果(!isHidden)
{
添加(子文件夹);
}
}
捕获(例外情况除外)
{
系统.诊断.调试.写入线(例如消息);
}
//使用childFolder调用EnumerateFolders。
枚举文件夹(子文件夹、所有文件夹);
}
}
}
我在这里面临的问题是,如果我在根文件夹下创建一个新文件夹并执行上面的代码,我会收到一个错误“MAPI属性0x10F4000B未找到”。0x10F4000B用于PT_属性隐藏

如果使用OWA创建新文件夹,则此属性可用。仅当我在Outlook 2013中创建文件夹时,它才可用

有人能帮我理解这里的问题吗。
提前感谢。

您不能期望任何MAPI属性可用。恰好OWA将该属性设置为false。Outlook只关心属性是否为真。如果缺少该属性,则假定必须显示该文件夹(PR_ATTR_HIDDEN=false)