Aspose Outlook コントロールを使用して Outlook メッセージを Windows Forms にドラッグ&ドロップする
Contents
[
Hide
]
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 フォームにドラッグします:
![]() |
|---|
- MyPanel の DragDrop イベントにハンドラを追加します。(プロパティ パネルで AllowDrop を true に設定し、BackColor を好きな色に変更するのを忘れずに)
![]() |
|---|
- メイン フォームの 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 ファイルとして保存するように促します。

