Windows Explorer hängt an Drag & Drop von WinForms DataGridView abC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Windows Explorer hängt an Drag & Drop von WinForms DataGridView ab

Post by Anonymous »

Ich versuche, einen Datei-Explorer zu erstellen, der Drag & Drop-Funktionen hat und die Endbenutzer-Drag & Drop-Dateien von diesem benutzerdefinierten Datei-Explorer direkt zum Windows Explorer kopieren, um die ausgewählten Dateien zu kopieren. Letzterer hört auf, den Vorgang zu reagieren, und ich muss den Prozess manuell töten. Replizieren Sie es konsequent: Ich konnte dieses Verhalten nur ein paar Mal in einen leeren Ordner fallen lassen, aber wenn Sie die Dateien in einem Ordner fallen lassen, der bereits genau dieselben Dateien enthält, passiert es weitaus häufiger . Devexpress -Steuerelemente.

Code: Select all

private void MouseMove(object sender, MouseEventArgs e) {
if (e.Button == MouseButtons.Left && _draggingHitInfo != null) {
Size dragSize = SystemInformation.DragSize;
var dragRect = new Rectangle(new Point(_eventArgs.X - dragSize.Width / 2, _eventArgs.Y - dragSize.Height / 2), dragSize);
if (!dragRect.Contains(new Point(e.X, e.Y))) {
var selNodes = dataGridView1.SelectedRows;
var paths = new System.Collections.Specialized.StringCollection();
foreach (DataGridViewRow node in selNodes) {
string path = node.Cells[0].Value?.ToString();
if (File.Exists(path))
paths.Add(path);
}

if (paths.Count > 0) {
var dataObj = new DataObject();
dataObj.SetFileDropList(paths);
dataGridView1.DoDragDrop(dataObj, DragDropEffects.Copy);
}

_draggingHitInfo = null;
_eventArgs = null;
}
}
}

private void MouseDown(object sender, MouseEventArgs e) {
HitTestInfo hitInfo =  dataGridView1.HitTest(e.X, e.Y);
if (hitInfo.Type == DataGridViewHitTestType.Cell || hitInfo.Type == DataGridViewHitTestType.RowHeader) {
_draggingHitInfo = hitInfo;
_eventArgs = e;
}
}
< /code>
Das Formular enthält eine einfache DataGridView mit einer einzelnen Spalte, die den Vollfilmnamen jeder Datei enthält, wie folgt: < /p>
private void Form1_Load(object sender, EventArgs e) {
// change the file paths to your location.
object[] data1 = new object[] { "C:\\Users\\talignanid\\Desktop\\SampleDragDrop\\SampleDragDrop\\files\\Divisore.bmp" };
object[] data2 = new object[] { "C:\\Users\\talignanid\\Desktop\\SampleDragDrop\\SampleDragDrop\\files\\Esploso.jpg" };
object[] data3 = new object[] { "C:\\Users\\talignanid\\Desktop\\SampleDragDrop\\SampleDragDrop\\files\\Offerta 1.xlsx" };

DataTable dt = new DataTable();
dt.Columns.Add("Filename");
dt.Rows.Add(data1);
dt.Rows.Add(data2);
dt.Rows.Add(data3);

dataGridView1.DataSource = dt;
}
< /code>
Ich habe versucht, den Prozessmonitor zu verwenden, um einen Fehler innerhalb des Explorers beim Löschen, aber ohne Erfolg zu fangen. Gleiches gilt für meine Bewerbung. Wenn Explorer nicht mehr reagiert, friert mein Programm offensichtlich auch ein. Das Töten des Explorer.exe -Prozesses weckt mein Programm auf, aber das gleiche geschieht nicht beim Töten meines Programms: Windows Explorer bleibt in diesem unerschütterlichen Zustand. Schließlich kann ich beim Neustarten von Explorer.exe sehen, dass die Dateien im Ordner korrekt kopiert werden. Das [url=viewtopic.php?t=20324]Problem[/url] muss also [b] nach [/b] die Kopie bereits abgeschlossen sein.  
mache ich etwas falsches in meinem Code? Ist es ein bekanntes Problem? Gibt es eine Problemumgehung?*******************************************************************************
*                                                                             *
*                        Exception Analysis                                   *
*                                                                             *
*******************************************************************************

KEY_VALUES_STRING: 1

Key  : Analysis.CPU.mSec
Value: 7921

Key  : Analysis.Elapsed.mSec
Value: 10786

Key  : Analysis.IO.Other.Mb
Value: 0

Key  : Analysis.IO.Read.Mb
Value: 2

Key  : Analysis.IO.Write.Mb
Value: 0

Key  : Analysis.Init.CPU.mSec
Value: 1453

Key  : Analysis.Init.Elapsed.mSec
Value: 444055

Key  : Analysis.Memory.CommitPeak.Mb
Value: 518

Key  : Analysis.Version.DbgEng
Value: 10.0.27829.1001

Key  : Analysis.Version.Description
Value: 10.2503.24.01 amd64fre

Key  : Analysis.Version.Ext
Value: 1.2503.24.1

Key  : Failure.Bucket
Value: BREAKPOINT_80000003_win32u.dll!NtUserWaitMessage

Key  : Failure.Exception.Code
Value: 0x80000003

Key  : Failure.Hash
Value: {a106cd41-a8b1-c51d-6d94-a75661270841}

Key  : Failure.ProblemClass.Primary
Value: BREAKPOINT

Key  : Faulting.IP.Type
Value: Null

Key  : Timeline.OS.Boot.DeltaSec
Value: 2486366

Key  : Timeline.Process.Start.DeltaSec
Value: 1046

Key  : WER.OS.Branch
Value: co_release

Key  : WER.OS.Version
Value: 10.0.22000.1

Key  : WER.Process.Version
Value: 6.2.22000.2538

FILE_IN_CAB:  explorer.exe_250506_084542.dmp

COMMENT:
*** C:\Users\talignanid\Desktop\procdump.exe  -h -ma explorer.exe
*** Hung window detected: 208be

NTGLOBALFLAG:  0

APPLICATION_VERIFIER_FLAGS:  0

EXCEPTION_RECORD:  (.exr -1)
ExceptionAddress: 0000000000000000
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 0

FAULTING_THREAD:  d1d20

PROCESS_NAME:  explorer.exe

ERROR_CODE: (NTSTATUS) 0x80000003 - {ERRORE DI EXCEPTION}  Breakpoint    stato raggiunto un breakpoint.

EXCEPTION_CODE_STR:  80000003

STACK_TEXT:
00000000`002ef588 00007ffb`3a6eda3c     : 00000000`00844850 00000000`002ef740 00000000`0000029c 00000000`0000029c : win32u!NtUserWaitMessage+0x14
00000000`002ef590 00007ffb`3a6ed97d     : 00000000`039cbd90 00000000`03a1bb10 00000000`00844850 00000000`0000029c : shell32!CDesktopBrowser::_MessageLoop+0x4c
00000000`002ef610 00007ff7`231f0e4f     : 00000000`00000000 00000000`0000029e 00000000`00000000 00000000`0000029c : shell32!SHDesktopMessageLoop+0x3d
00000000`002ef640 00007ff7`232209c0     : 00000000`00000001 00000000`00000000 00000000`00000000 00000000`00000000 : explorer!wWinMain+0x817
00000000`002efa90 00007ffb`3a4153e0     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : explorer!__scrt_common_main_seh+0x110
00000000`002efad0 00007ffb`3ba2485b     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0x10
00000000`002efb00 00000000`00000000     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x2b

STACK_COMMAND: ~0s; .ecxr ; kb

SYMBOL_NAME:  win32u!NtUserWaitMessage+14

MODULE_NAME: win32u

IMAGE_NAME:  win32u.dll

FAILURE_BUCKET_ID:  BREAKPOINT_80000003_win32u.dll!NtUserWaitMessage

OS_VERSION:  10.0.22000.1

BUILDLAB_STR:  co_release

OSPLATFORM_TYPE:  x64

OSNAME:  Windows 10

IMAGE_VERSION:  6.2.22000.2538

FAILURE_ID_HASH:  {a106cd41-a8b1-c51d-6d94-a75661270841}

Followup:     MachineOwner
---------

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post