protected override void OnDragOver(F.DragEventArgs e) {
var wp = new DataObject.Win32Point() { X = e.X, Y = e.Y };
Drag_SetEffect(e);
int row = -1, collumn = -1;
this.HitTest(PointToClient(new DPoint(e.X, e.Y)), out row, out collumn);
var descinvalid = new DataObject.DropDescription();
descinvalid.type = (int)DataObject.DropImageType.Invalid;
var ddResult = ((System.Runtime.InteropServices.ComTypes.IDataObject)e.Data).SetDropDescription(descinvalid);
if (row != -1) {
this.RefreshItem(_LastDropHighLightedItemIndex);
this._LastDropHighLightedItemIndex = row;
this.RefreshItem(row);
if (ddResult == HResult.S_OK) {
var desc = new DataObject.DropDescription();
switch (e.Effect) {
case F.DragDropEffects.Copy:
desc.type = (int)DataObject.DropImageType.Copy;
desc.szMessage = "Copy To %1";
break;
case F.DragDropEffects.Link:
desc.type = (int)DataObject.DropImageType.Link;
desc.szMessage = "Create Link in %1";
break;
case F.DragDropEffects.Move:
desc.type = (int)DataObject.DropImageType.Move;
desc.szMessage = "Move To %1";
break;
case F.DragDropEffects.None:
desc.type = (int)DataObject.DropImageType.None;
desc.szMessage = "";
break;
default:
desc.type = (int)DataObject.DropImageType.Invalid;
desc.szMessage = "";
break;
}
desc.szInsert = this.Items[row].DisplayName;
if (this._DraggedItemIndexes.Contains(row) || !this.Items[row].IsFolder) {
if (this.Items[row].Extension == ".exe") {
desc.type = (int)DataObject.DropImageType.Copy;
desc.szMessage = "Open With %1";
} else {
desc.type = (Int32)DataObject.DropImageType.None;
desc.szMessage = "Cant Drop Here!";
}
}
((System.Runtime.InteropServices.ComTypes.IDataObject)e.Data).SetDropDescription(desc);
}
} else {
this.RefreshItem(_LastDropHighLightedItemIndex);
this._LastDropHighLightedItemIndex = -1;
if (ddResult == HResult.S_OK) {
if (e.Effect == F.DragDropEffects.Link) {
DataObject.DropDescription desc = new DataObject.DropDescription();
desc.type = (int)DataObject.DropImageType.Link;
desc.szMessage = "Create Link in %1";
desc.szInsert = this.CurrentFolder.DisplayName;
((System.Runtime.InteropServices.ComTypes.IDataObject)e.Data).SetDropDescription(desc);
} else if (e.Effect == F.DragDropEffects.Copy) {
DataObject.DropDescription desc = new DataObject.DropDescription();
desc.type = (int)DataObject.DropImageType.Link;
desc.szMessage = "Create a copy in %1";
desc.szInsert = this.CurrentFolder.DisplayName;
((System.Runtime.InteropServices.ComTypes.IDataObject)e.Data).SetDropDescription(desc);
}
}
}
if (e.Data.GetDataPresent("DragImageBits"))
DropTarget.Create.DragOver(ref wp, (Int32)e.Effect);
else
base.OnDragOver(e);
}