Wenn bei Drag and Drop von Dateien in das eigene Programm unmittelbar ein Dialog angezeigt wird, z.B. eine MessageBox),
ist die D&D-Quelle blockiert, zu erkennen am Mauszeiger mit Verknüpfungssymbol.
Wenn vom explorer dedroppt wird, ist dann der Explorer so lange nicht bedienbar, bis der Dialog beendet wird.
Mit dieser einfachen Lösung lässt sich dieses Problem elegant beheben:
Die empfangene Dateiliste wird per
Spoiler anzeigen
ist die D&D-Quelle blockiert, zu erkennen am Mauszeiger mit Verknüpfungssymbol.
Wenn vom explorer dedroppt wird, ist dann der Explorer so lange nicht bedienbar, bis der Dialog beendet wird.
Mit dieser einfachen Lösung lässt sich dieses Problem elegant beheben:
Die empfangene Dateiliste wird per
BeginInvoke()
an die nächste Prozedur übergeben (Invoke()
funktioniert nicht!).C#-Quellcode
- private void MainForm_DragEnter(object sender, DragEventArgs e)
- {
- if (e.Data.GetDataPresent(DataFormats.FileDrop))
- {
- e.Effect = e.AllowedEffect;
- }
- }
- private void MainForm_DragDrop(object sender, DragEventArgs e)
- {
- e.Effect = DragDropEffects.None;
- if (!e.Data.GetDataPresent(DataFormats.FileDrop))
- {
- return;
- }
- string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
- // Entkoppeln der D&D-Source
- Action<List<string>> action = new Action<List<string>>(this.DoIt);
- this.BeginInvoke(action, files.ToList());
- }
- private void DoIt(List<string> files)
- {
- MessageBox.Show(files.Count.ToString());
- }
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert!
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert!