使用 Aspose Outlook 控件将 Outlook 消息拖放到 Windows 窗体

Contents
[ ]

Aspose.Email 支持 Microsoft Outlook 的拖放功能。它使开发人员能够轻松创建响应 Outlook 拖放事件的 UI 元素。以下示例展示了如何创建一个面板,用户可以将 Outlook 中的邮件拖放到该面板上,并将邮件保存为 MSG 文件。以下代码片段展示了如何设置一个能够接收 Microsoft Outlook 拖放邮件的 Aspose Outlook 控件。

  • 创建一个 Windows 窗体应用程序。
  • 添加对 Aspose.Email 程序集的引用。
  • 浏览到 Aspose.Email.dll 并点击 OK

此示例创建的 UI 元素是一个面板。创建面板的方法如下:

  • 在解决方案面板中右键单击项目,选择 Add,然后从菜单中选择 New item
  • 创建一个名为 MyPanel 的类:
  • 让 MyPanel 成为 System.Windows.Forms.Panel 的子类,并向 MyPanel 添加一个 Aspose.Email.Windows.Forms.FileDropTargetManager 字段。
  • 重写 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,并将 MyPanel 的 BackColor 属性改为您喜欢的颜色。)
todo:image_alt_text
  • 在主窗体的 InitializeComponent() 方法中添加以下行:
this.myPanel1.AllowDrop = true;
  • 实现 DragDrop 事件处理程序,以将从 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 文件。