2017-09-07 14 views
0

WinFormsのDataGridに何かをドラッグアンドドロップしたいです。彼がDrag EnterとDrag Dropを認識する機能が作られています。それは、魅力のように機能します。なぜなら、入力時にテキストがポップアップされ、ドロップ時にテキストがポップアップされるからです。ドラッグドロップの内容

悲しいことに、悲しいことに、私がそこに落としたもの(Outlookの連絡先)の内容にアクセスする方法がわかりません。私の目標はドロップし、Outlookはデータグリッドに連絡しています。連絡先に名前、Eメールアドレスなどが含まれていて、一時的に保存してグリッドに挿入できるようにしたいと考えています。

私のお手伝いをしたり、これに対処する方法を私に教えていただきたいと願っています。

ありがとうございます。

答えて

1

まず、Microsoft.Office.Interop.Outlookへの参照が必要です。これにはNuGetパッケージがあります。

Install-Package Microsoft.Office.Interop.Outlook 

Outlook.Applicationのインスタンスを作成し、DragDropハンドラ内で選択した項目を取得します。

private Microsoft.Office.Interop.Outlook.Application moOutlook = new Microsoft.Office.Interop.Outlook.Application(); 
private void DragDropHandler(object sender, DragEventArgs e) 
{ 
    var loExplorer = moOutlook.ActiveExplorer(); 
    var loSelection = loExplorer.Selection; 

    foreach (object loItem in loSelection) 
    { 
     Microsoft.Office.Interop.Outlook.ContactItem loContactItem = (loItem as Microsoft.Office.Interop.Outlook.ContactItem); 
     if (loContactItem != null) 
     { 
      Console.WriteLine(loContactItem.EntryID); 
      Console.WriteLine(loContactItem.Email1Address); 
      Console.WriteLine(loContactItem.Email2Address); 
     } 
    } 
} 
+0

このコードは正しくありません。誰もOutlookを再起動しません。ほとんどすべてのOfficeオブジェクトにはApplicationプロパティがあり、オブジェクトを生成したインスタンスに参照を戻すことができます。 ContactItemはそうです。 –

+0

「誰もOutlookを再開したくない」とどういう意味ですか? Outlookが開いていなければ、 'new Microsoft.Office.Interop.Outlook.Application()'は失敗します。 'Application'もHandlerで作成し、失敗した場合はExceptionHandlingを行います。 – PinBack

+0

が私のために働いた。私は欲しかったことをした。ありがとう – MansNotHot

関連する問題