Aspose Outlook コントロールを使用して Outlook メッセージを Windows Forms にドラッグ&ドロップする

Contents
[ ]

Aspose.Email は Microsoft Outlook のドラッグ アンド ドロップ機能をサポートします。これにより、開発者は Outlook のドラッグ ドロップ イベントに応答する UI 要素を簡単に作成できます。以下のサンプルは、ユーザーが Outlook からメッセージをドラッグしてパネルにドロップし、プログラムが MSG ファイルとして保存する方法を示します。また、Outlook メッセージを受け取る Aspose Outlook コントロールの設定方法も示します。

  • Windows フォーム アプリケーションを作成します。
  • Aspose.Email アセンブリへの参照を追加します。
  • Aspose.Email.dll を参照し、OK をクリックします。

このサンプルで作成された UI 要素はパネルです。パネルを作成するには:

  • ソリューションパネルでプロジェクトを右クリックし、メニューから Add、次に New item を選択します。
  • MyPanel というクラスを作成します:
  • MyPanel を System.Windows.Forms.Panel のサブクラスにし、Aspose.Email.Windows.Forms.FileDropTargetManager フィールドを MyPanel に追加します。
  • OnHandleCreated と OnHandleDestroyed メソッドをオーバーライドして、Aspose.Email.Windows.Forms.FileDropTargetManager を使用して MyPanel の登録と登録解除を行います:
class MyPanel : System.Windows.Forms.Panel	
{
    private Aspose.Email.Windows.Forms.FileDropTargetManager manager;

    // Hook up
    protected override void OnHandleCreated(EventArgs e)
    {
        this.manager = new Aspose.Email.Windows.Forms.FileDropTargetManager(this);
        this.manager.EnsureRegistered(this);
        base.OnHandleCreated(e);
    }

    // Unhook
    protected override void OnHandleDestroyed(EventArgs e)
    {
        this.manager.EnsureUnRegistered(this);
        base.OnHandleDestroyed(e);
    }
}
  • プロジェクトをビルドします。

MyPanel の使用準備ができました。このパネルは Outlook からのドラッグ&ドロップ イベントを受け付けます。

  • ツールボックス パネルを開き、MyPanel を Windows フォームにドラッグします:
todo:image_alt_text
  • MyPanel の DragDrop イベントにハンドラを追加します。(プロパティ パネルで AllowDrop を true に設定し、BackColor を好きな色に変更するのを忘れずに)
todo:image_alt_text
  • メイン フォームの InitializeComponent() メソッドに以下の行を追加します:
this.myPanel1.AllowDrop = true;
  • ドラッグドロップ イベントハンドラを実装して、Outlook からドラッグされたメッセージを MSG ファイルに保存します。
  • DragEventArgs を Aspose.Email.Windows.Forms.FileDragEventArgs にキャストします。このクラスは、ユーザーのドラッグ対象を表す Files 配列プロパティを含んでいます。

ユーザーが Outlook から複数のメッセージをドラッグして MyPanel にドロップすると、Files.Count はメッセージ数を示し、Files[i] で各メッセージにアクセスできます。

private void myPanel1_DragDrop(object sender, DragEventArgs e)
{

    Aspose.Email.Windows.Forms.FileDragEventArgs args;
    args = (Aspose.Email.Windows.Forms.FileDragEventArgs)e;
    if (args != null && args.Files.Count > 0)
    {
        for (int i = 0; i < args.Files.Count; i++)
        {
            SaveFileDialog dialog = new SaveFileDialog();
            dialog.FileName = args.Files[i].FileName;
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    System.IO.FileStream output;
                    output = new System.IO.FileStream(dialog.FileName, System.IO.FileMode.CreateNew);
                    args.Files[i].Save(output);
                    MessageBox.Show("Save success:" + dialog.FileName);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Save failed:" + ex.ToString());
                }
            }
        }
    }
}
  • プロジェクトを実行してテストします。

これで Outlook からメッセージをドラッグしてアプリケーションにドロップできます。アプリはそれらのメッセージを MSG ファイルとして保存するように促します。