0

私はこれに悩まされています。メインの連絡先を変更する前にバックアップが必要なac#アプリケーションがあります。しかし、そのコピーは、何があっても固執しているようです。Outlookのコンテンツフォルダの内容を視覚的に確認して、これを確認しています。

私はそのような簡単なテストケースを持っています...

Application outlookApplication = new Application();
NameSpace outlookNamespace = outlookApplication.GetNamespace("mapi");
outlookNamespace.Logon("", "", true, true);
MAPIFolder Folder = outlookNamespace.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
MAPIFolder Folder2 = Folder.Folders["Test1"];
Items ContactItems = Folder2.Items;
foreach (ContactItem Contact in ContactItems)
{
    ContactItem Backup = (ContactItem)Contact.Copy();
    Backup.Delete();
    break;
}
outlookNamespace.Logoff();
outlookNamespace = null;

2回削除しようとすると、エラーが発生します。削除済みアイテムフォルダに移動しようとしましたが、うまくいきませんでした。Outlook2010。何が起こっているのですか?

編集:回避策:新しい連絡先を作成して元の連絡先からデータを入力すると、問題なく削除できます。

4

1 に答える 1

0

私は C# の構文に詳しくありませんが、コピーを作成するときに Items コレクションに追加しているためだと思います。私はこれをします:

foreach ループの開始前に、ContactItems の数を確認します。

Items ContactItems = Folder2.Items;
' display ContactItems.Count here, is it Console.WriteLine(ContactItems.Count) ??

コピーを作成したら、ContactItems.Count をもう一度確認します。増加した場合は、ループを foreach ループの代わりに「For i = ContactItems.Count to 1 Step -1」タイプのループに変更する必要があります (申し訳ありませんが、私は VB 構文しか知りません。わかりません)同等の C# 構文)。後方ループでなければなりません。

それが機能しない場合は、コピーを作成して別の連絡先フォルダーに追加します。これにより、作業中のフォルダーのアイテム コレクションに干渉しなくなります。それはあなたがすでにやっていることと似ています。

于 2011-08-30T17:34:33.737 に答える