BExplorer.Shell.ShellView.OnDragOver C# (CSharp) Method

OnDragOver() protected method

protected OnDragOver ( System.Windows.Forms e ) : void
e System.Windows.Forms
return void
    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);
    }
ShellView