为何在Outlook现有文件夹中新增子文件夹始终排在第二位?
Outlook新增子文件夹始终显示为第二个子项的原因
问题场景
在Outlook的Friends文件夹下已有两个子文件夹,顺序为:(1) Jan、(2) Andrew。通过代码添加名为Jack的子文件夹后,顺序变为(1) Jan、(2) Jack、(3) Andrew,疑问是为何新增文件夹始终作为第二个子项显示。
执行代码
OApp = new(); Ons = OApp.GetNamespace("MAPI"); OMapiFld = Ons.GetDefaultFolder(OlDefaultFolders.olFolderInbox); OFriendsFld = OMapiFld.Folders["Friends"]; OFFolder = (Folder)OFriendsFld.Folders.Add("Jack", OlDefaultFolders.olFolderInbox);
原因分析
这是因为你调用Folders.Add时指定了第二个参数OlDefaultFolders.olFolderInbox,将新文件夹设置为收件箱类型的文件夹。Outlook的文件夹列表默认会按文件夹类型分组排序:
- 同类型的文件夹会被归为一组,组内再按名称排序;
- 你的
Jan文件夹大概率也是olFolderInbox类型,而Andrew是其他类型(比如未指定默认类型的自定义文件夹); - 所以新增的
Jack会被插入到同类型的Jan之后,再排在非同类的Andrew之前,最终呈现出Jan、Jack、Andrew的顺序。
解决方案
如果希望新增文件夹按名称排序插入到对应位置,可以尝试以下两种方式:
- 不指定文件夹类型:调用
Add方法时省略第二个参数,默认创建自定义类型文件夹,此时Outlook会直接按名称排序所有子文件夹:OFFolder = (Folder)OFriendsFld.Folders.Add("Jack"); - 修改文件夹视图排序规则:在Outlook客户端中进入
Friends文件夹的视图设置,将排序方式改为按名称排序,所有子文件夹就会严格按名称字母顺序排列。
内容的提问来源于stack exchange,提问作者darbid
相关产品推荐
相关产品推荐

