private void messagesListView_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) { if (e.Data.GetDataPresent(typeof(MessageDragContainer))) { MessageDragContainer messageDragContainer = (MessageDragContainer)e.Data.GetData(typeof(MessageDragContainer)); OnMessagesDragDrop(new MessagesDragDropEventArgs(messageDragContainer.OwnerQueueItem, _qSetQueueItem, messageDragContainer.Messages)); } }
private void messagesListView_MouseMove(object sender, MouseEventArgs e) { if ((e.Button & MouseButtons.Left) == MouseButtons.Left) { // If the mouse moves outside the rectangle, start the drag. if (_dragBoxFromMouseDown != Rectangle.Empty && !_dragBoxFromMouseDown.Contains(e.X, e.Y)) { System.Messaging.Message[] messages = new System.Messaging.Message[messagesListView.SelectedItems.Count]; for (int i = 0; i < messagesListView.SelectedItems.Count; i++) { messages[i] = ((MessageListViewItem)messagesListView.SelectedItems[i]).Message; } MessageDragContainer messageDragContainer = new MessageDragContainer(_qSetQueueItem, messages); messagesListView.DoDragDrop(messageDragContainer, DragDropEffects.Move); } } }
/// <summary> /// Handles the drag drop. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void _qsetTreeView_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) { //get the item which was dragged on to QSetItemBase dragOverItem = _qsetTreeView.GetNodeAt(_qsetTreeView.PointToClient(new Point(e.X, e.Y))) == null ? null : ((QSetItemTreeNode)_qsetTreeView.GetNodeAt(_qsetTreeView.PointToClient(new Point(e.X, e.Y)))).QSetItem; //was a Q Set item dragged? QSetItemBase droppedItem = QSetItemBase.GetFromDataObject(e.Data); if (droppedItem != null) { //handle Q Set item drag QSetFolderItem dragOverFolder = dragOverItem as QSetFolderItem; if (dragOverFolder != null && droppedItem.ParentItem != dragOverFolder) { if (!dragOverFolder.ChildItems.Exists(droppedItem.Name)) { ((QSetFolderItem)droppedItem.ParentItem).ChildItems.Remove(droppedItem.Name); dragOverFolder.ChildItems.Add(droppedItem); } else { MessageBox.Show(Locale.UserMessages.CannotAddItemAsAlreadyExists, System.Windows.Forms.Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); } } } else { //is this a message(s) drag? MessageDragContainer messageDragContainer = (MessageDragContainer)e.Data.GetData(typeof(MessageDragContainer)); if (messageDragContainer != null) { OnMessagesDragDrop(new MessagesDragDropEventArgs(messageDragContainer.OwnerQueueItem, (QSetQueueItem)dragOverItem, messageDragContainer.Messages)); } } }
/// <summary> /// Handles the drag enter/over to provide visual feedback to the user. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void _qsetTreeView_DragOver(object sender, System.Windows.Forms.DragEventArgs e) { //get the item being dragged over QSetItemBase dragOverItem = _qsetTreeView.GetNodeAt(_qsetTreeView.PointToClient(new Point(e.X, e.Y))) == null ? null : ((QSetItemTreeNode)_qsetTreeView.GetNodeAt(_qsetTreeView.PointToClient(new Point(e.X, e.Y)))).QSetItem; e.Effect = DragDropEffects.None; //is this a Q Set item being dragged QSetItemBase qSetDragItem = QSetItemBase.GetFromDataObject(e.Data); if (qSetDragItem != null) { //handle a Q Set item drag if (qSetDragItem != null && dragOverItem != null && dragOverItem is QSetFolderItem && !(IsAncestorOf(qSetDragItem, dragOverItem)) && qSetDragItem.ParentItem != dragOverItem && !(dragOverItem is QSetMachineItem) && qSetDragItem != dragOverItem) { e.Effect = DragDropEffects.Move; } } else { //is this a message(s) drag? MessageDragContainer messageDragContainer = (MessageDragContainer)e.Data.GetData(typeof(MessageDragContainer)); if (messageDragContainer != null) { if (dragOverItem is QSetQueueItem) { e.Effect = DragDropEffects.Move; } } } }
private void messagesListView_MouseMove(object sender, MouseEventArgs e) { if ((e.Button & MouseButtons.Left) == MouseButtons.Left) { // If the mouse moves outside the rectangle, start the drag. if (_dragBoxFromMouseDown != Rectangle.Empty && !_dragBoxFromMouseDown.Contains(e.X, e.Y)) { System.Messaging.Message[] messages = new System.Messaging.Message[messagesListView.SelectedItems.Count]; for (int i = 0; i < messagesListView.SelectedItems.Count; i ++) { messages[i] = ((MessageListViewItem)messagesListView.SelectedItems[i]).Message; } MessageDragContainer messageDragContainer = new MessageDragContainer(_qSetQueueItem, messages); messagesListView.DoDragDrop(messageDragContainer, DragDropEffects.Move); } } }