DragDrop texte du navigateur à la zone de texte

J’essaie de glisser-déposer du texte d’une page Web dans une zone de texte sur un Winform. Tout fonctionne comme prévu de MS Edge, Firefox Opera et Chrome mais pas IE11 ou Safari. Le bref code que j’utilise pour l’événement DragOver est le suivant:

private void textBox1_DragDrop(object sender, DragEventArgs e) { if(e.Data.GetDataPresent(DataFormats.Text, false)) { textBox1.Text = (ssortingng)e.Data.GetData(DataFormats.Text); } } 

Il semble que le DataFormat d’IE et de Safari ne soit pas du texte, mais je n’arrive pas à comprendre ce que c’est.

Bien sûr, il se peut que le navigateur ne me laisse pas faire glisser le texte.

Des idées qui causent mon problème?

Merci,

J.

C’est un moyen d’obtenir les données dans tous les formats disponibles à partir d’une opération de glisser-déposer.
Une source de navigateur fonctionne bien (j’ai testé Edge, IE 11 et FireFox).

Les formats source sont généralement transmis sous forme de chaînes ou de MemoryStream .
Vous pouvez en outre l’adapter à votre contexte.

METTRE À JOUR:
Reconstruit l’object de classe principal. Il est maintenant plus compact et gère plus de détails. De plus, j’ai ajouté un exemple de formulaire WinForms VS pour tester ses résultats. C’est un formulaire standard qui peut être inclus dans un projet VS.

Google Drive: exemple de formulaire de glisser-déposer

entrez la description de l'image ici

 using System.Drawing; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Text.RegularExpressions; private FileDropResults DD_Results; public class FileDropResults { public enum DataFormat : int { MemoryStream = 0, Text, UnicodeText, Html, Bitmap, ImageBits, } public FileDropResults() { this.Contents = new List(); } public List Contents { get; set; } public class DropContent { public object Content { get; set; } public ssortingng Result { get; set; } public DataFormat Format { get; set; } public ssortingng DataFormatName { get; set; } public List Images { get; set; } public List HttpSourceImages { get; set; } } } private void TextBox1_DragDrop(object sender, DragEventArgs e) { GetDataFormats(e.Data); } private void TextBox1_DragEnter(object sender, DragEventArgs e) { e.Effect = DragDropEffects.Copy; } private void GetDataFormats(IDataObject Data) { DD_Results = new FileDropResults(); List _formats = Data.GetFormats(false).ToList(); foreach (ssortingng _format in _formats) { FileDropResults.DropContent CurrentContents = new FileDropResults.DropContent() { DataFormatName = _format }; switch (_format) { case ("FileGroupDescriptor"): case ("FileGroupDescriptorW"): case ("DragContext"): case ("UntrustedDragDrop"): break; case ("DragImageBits"): CurrentContents.Content = (MemoryStream)Data.GetData(_format, true); CurrentContents.Format = FileDropResults.DataFormat.ImageBits; break; case ("FileDrop"): CurrentContents.Content = null; CurrentContents.Format = FileDropResults.DataFormat.Bitmap; CurrentContents.Images = new List(); CurrentContents.Images.AddRange( ((ssortingng[])Data.GetData(DataFormats.FileDrop, true)) .ToList() .Select(img => Bitmap.FromFile(img)) .Cast().ToArray()); break; case ("HTML Format"): CurrentContents.Format = FileDropResults.DataFormat.Html; CurrentContents.Content = Data.GetData(DataFormats.Html, true); int HtmlContentInit = CurrentContents.Content.ToSsortingng().IndexOf("", SsortingngComparison.InvariantCultureIgnoreCase); if (HtmlContentInit > 0) CurrentContents.Content = CurrentContents.Content.ToSsortingng().Subssortingng(HtmlContentInit); CurrentContents.HttpSourceImages = DD_GetHtmlImages(CurrentContents.Content.ToSsortingng()); break; case ("UnicodeText"): CurrentContents.Format = FileDropResults.DataFormat.UnicodeText; CurrentContents.Content = Data.GetData(DataFormats.UnicodeText, true); break; case ("Text"): CurrentContents.Format = FileDropResults.DataFormat.Text; CurrentContents.Content = Data.GetData(DataFormats.Text, true); break; default: CurrentContents.Format = FileDropResults.DataFormat.MemoryStream; CurrentContents.Content = Data.GetData(_format, true); break; } if (CurrentContents.Content != null) { if (CurrentContents.Content.GetType() == typeof(MemoryStream)) { using (MemoryStream _memStream = new MemoryStream()) { ((MemoryStream)CurrentContents.Content).CopyTo(_memStream); _memStream.Position = 0; CurrentContents.Result = Encoding.Unicode.GetSsortingng(_memStream.ToArray()); } } else { if (CurrentContents.Content.GetType() == typeof(Ssortingng)) CurrentContents.Result = CurrentContents.Content.ToSsortingng(); } } DD_Results.Contents.Add(CurrentContents); } } public List DD_GetHtmlImages(ssortingng HtmlSource) { MatchCollection matches = Regex.Matches(HtmlSource, @"]+src=""([^""]*)""", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase); return (matches.Count > 0) ? matches.Cast() .Select(x => x.Groups[1] .ToSsortingng()).ToList() : null; }