Des corps à partir d'Outlook email [drag'n'Drop]
Je travaille avec WPF et je suis en train de faire un drag'n'drop zone de texte.
Dans cette zone de texte, je veux obtenir le corps d'un courriel que j'ai faites glisser à partir d'outlook.
Le code fonctionne, mais je pense que j'ai besoin de quelque chose de “réinitialiser” le ActiveExplorer cause maintenant, il n'affiche que la dernière “NOUVELLE” courriel que j'ai faites glisser dans la zone de texte.
Exemple:
Glisser email 1 -> zone de texte - Montre e-mail 1
Glisser email 2 -> zone de texte - Montre email 2
Glisser email 1 -> zone de texte - Montre email 2 et e-mail 1 ne sera pas affiché car il existe déjà dans le ActiveExplorer et il va montrer email 2.
Espère que ma question est un peu clair pour vous..
Merci à l'avance!
Code XAML:
<TextBox
Name="myTextbox"
AllowDrop="True"
PreviewDragEnter="email_DragEnter"
PreviewDrop="email_Drop" />
Code XAML derrière:
private void email_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Copy;
}
private void email_Drop(object sender, DragEventArgs e)
{
Outlook.ApplicationClass oApp = new Outlook.ApplicationClass();
Outlook.Explorer oExplorer = oApp.ActiveExplorer();
Outlook.Selection oSelection = oExplorer.Selection;
foreach (object item in oSelection)
{
Outlook.MailItem mi = (Outlook.MailItem)item;
myTextbox.Text = mi.Body.ToString();
}
}
OriginalL'auteur jefsmi | 2011-10-18
Vous devez vous connecter pour publier un commentaire.
J'ai déplacé la déclaration de
oApp
de événement DragDrop ci-dessous, et il fonctionne comme prévu.-------- MODIFIER--------
OU Est-il possible que vous afficher uniquement le dernier point à cause de cette boucle?
Désolé, je ne suis pas sûr que je comprends bien mais Si je fais glisser un élément, je vois que c'est du texte. Si je sélectionne plusieurs, la totalité de leur texte vient à richtextbox1
Et faites-le glisser dans cet ordre: e-Mail 1 -> après que claire zone de texte, puis faites glisser un Autre mail -> après que claire zone de texte et faites-le glisser Mail 1 de nouveau qu'il vous montrer deuxième traîné mail et pas de Mail 1
Oui j'ai fait de même, et je vois e-mail 1 non 2 🙁
Pouvez-vous m'envoyer un simple projet de test? cause il n'est pas de travail ici 🙁
OriginalL'auteur L.B
J'ai mis à jour L. B de la réponse. Son
DragEnter
Gestionnaire automatiquement supposé que l'utilisateur a chuté de quelque chose à partir d'Outlook.Le résultat était que si l'utilisateur a chuté à quelque chose d'autre (un fichier texte sélectionné, ...), le code continue à regarder le actuellement sélectionné e-mails dans Outlook et ignorer ce qui a en fait diminué.
Le code:
Il existe une fonte de la sélection de l'élément Outlook à
Outlook.MailItem
. Le code donc ne fonctionne qu'avec la réalité des e-mails. Il est également possible de gérerOutlook.MeetingItem
,Outlook.ContactItem
,Outlook.NoteItem
et probablement plus.OriginalL'auteur Laoujin
À l'aide de la version 14.0.0.0 de l'Microsoft.Office.Interop.Outlook.dll je ne peux pas utiliser le
Outlook.ApplicationClass
objet.Au lieu de cela j'ai utilisé le
Outlook.Application
dans l'exemple que vous avez donné et il fonctionne comme un charme (testé avec windows seven & Outlook 2007 SP2). Je peux drag&drop e-mails.PS: MSDN Extrait pour la
ApplicationClass
classe:Pouvez-vous préciser votre scénario? Dans le premier exemple que vous faites glisser un e-mail unique alors que dans votre dernier commentaire, vous semblez dire en faisant glisser une sélection de plusieurs e-mails.
Je suis glisser signle e-mail. Mon screnario: [#1]. Faites glisser email_1 dans la zone de texte = OK ==> je effacer zone de texte [#2]. Faites glisser email_2 dans la zone de texte = OK ==> je effacer zone de texte [#3]. Faites glisser email_1 dans la zone de texte = PAS OK (Il montre email_2). Ceci est engagé à cause email_2 était le dernier mail dans le ActiveExplorer et sera la dernière mailItem dans ma boucle foreach.
Et ne vous essayez d'utiliser la 'Demande' de la classe?
Oui c'était mon premier essai mais ça n'a pas marché donc j'ai essayé avec ApplicationClass et rien n'a changé...
OriginalL'auteur Tim Bourguignon