protected override void OnDragDrop(DragEventArgs drgevent) { //Return if the items are not selected in the ListView control. if (this.SelectedItems.Count == 0) { return; } //Returns the location of the mouse pointer in the ListView control. Point cp = this.PointToClient(new Point(drgevent.X, drgevent.Y)); //Obtain the item that is located at the specified location of the mouse pointer. ListViewItem dragToItem = this.GetItemAt(cp.X, cp.Y); if (dragToItem == null) { return; } //Obtain the index of the item at the mouse pointer. int dragIndex = dragToItem.Index; ListViewItem[] sel = new ListViewItem[this.SelectedItems.Count]; for (int i = 0; i <= this.SelectedItems.Count - 1; i++) { sel[i] = this.SelectedItems[i]; } for (int i = 0; i < sel.GetLength(0); i++) { //Obtain the ListViewItem to be dragged to the target location. ListViewItem dragItem = sel[i]; int itemIndex = dragIndex; if (itemIndex == dragItem.Index) { return; } if (dragItem.Index < itemIndex) { itemIndex++; } else { itemIndex = dragIndex + i; } //Insert the item at the mouse pointer. ListViewItem insertItem = (ListViewItem)dragItem.Clone(); this.Items.Insert(itemIndex, insertItem); //Removes the item from the initial location while //the item is moved to the new location. this.Items.Remove(dragItem); } base.OnDragDrop(drgevent); }
protected override void OnDragDrop(DragEventArgs drgevent) { //Return if the items are not selected in the ListView control. if (this.SelectedItems.Count == 0) { return; } //Returns the location of the mouse pointer in the ListView control. Point cp = this.PointToClient(new Point(drgevent.X, drgevent.Y)); //Obtain the item that is located at the specified location of the mouse pointer. ListViewItem dragToItem = this.GetItemAt(cp.X, cp.Y); if (dragToItem == null) { return; } //Obtain the index of the item at the mouse pointer. int dragIndex = dragToItem.Index; ListViewItem[] sel = new ListViewItem[this.SelectedItems.Count]; for (int i = 0; i <= this.SelectedItems.Count - 1; i++) { sel[i] = this.SelectedItems[i]; } for (int i = 0; i < sel.GetLength(0); i++) { //Obtain the ListViewItem to be dragged to the target location. ListViewItem dragItem = sel[i]; int itemIndex = dragIndex; if (itemIndex == dragItem.Index) { return; } if (dragItem.Index < itemIndex) itemIndex++; else itemIndex = dragIndex + i; //Insert the item at the mouse pointer. ListViewItem insertItem = (ListViewItem)dragItem.Clone(); this.Items.Insert(itemIndex, insertItem); //Removes the item from the initial location while //the item is moved to the new location. this.Items.Remove(dragItem); } base.OnDragDrop(drgevent); }
private void scanListView_DragDrop(object sender, DragEventArgs e) { if (scanListView.SelectedItems.Count == 0) { return; } Point cp = scanListView.PointToClient(new Point(e.X, e.Y)); ListViewItem dragToItem = scanListView.GetItemAt(cp.X, cp.Y); if (dragToItem == null) { return; } int dragIndex = dragToItem.Index; ListViewItem[] sel = new ListViewItem[scanListView.SelectedItems.Count]; MainScanItem[] vsel = new MainScanItem[scanListView.SelectedItems.Count]; for (int i = 0; i < scanListView.SelectedItems.Count; i++) { sel[i] = scanListView.SelectedItems[i]; vsel[i] = scanItems[scanListView.SelectedIndices[i]]; } for (int i = 0; i < sel.GetLength(0); i++) { ListViewItem dragItem = sel[i]; MainScanItem vdragItem = vsel[i]; int itemIndex = dragIndex; if (itemIndex == dragItem.Index) { return; } bool isStart = false; if (vdragItem.Steam.scaninProg) { vdragItem.Steam.CancelScan(); isStart = true; } if (dragItem.Index < itemIndex) itemIndex++; else itemIndex = dragIndex + i; MainScanItem insertVItem = new MainScanItem(new saveTab(vdragItem.Steam.scanInput), steam_srch.cookieCont, new eventDelegate(Event_Message), settings.ignoreWarn, settings.resellDelay); insertVItem.LogCont = vdragItem.LogCont; if (isStart) { insertVItem.Steam.ScanPrices(); } scanItems.Insert(itemIndex, insertVItem); scanItems.Remove(vdragItem); scanItems.UpdateIds(); ListViewItem insertItem = (ListViewItem)dragItem.Clone(); scanListView.Items.Insert(itemIndex, insertItem); scanListView.Items.Remove(dragItem); insertItem.Selected = true; } }
private void recentListView_DragDrop(object sender, DragEventArgs e) { if (recentListView.SelectedItems.Count == 0) { return; } Point cp = recentListView.PointToClient(new Point(e.X, e.Y)); ListViewItem dragToItem = recentListView.GetItemAt(cp.X, cp.Y); if (dragToItem == null) { return; } int dragIndex = dragToItem.Index; ListViewItem[] sel = new ListViewItem[recentListView.SelectedItems.Count]; saveTab[] vsel = new saveTab[recentListView.SelectedItems.Count]; for (int i = 0; i < recentListView.SelectedItems.Count; i++) { sel[i] = recentListView.SelectedItems[i]; vsel[i] = steam_srch.recentInputList[recentListView.SelectedIndices[i]]; } for (int i = 0; i < sel.GetLength(0); i++) { ListViewItem dragItem = sel[i]; saveTab vdragItem = vsel[i]; int itemIndex = dragIndex; if (itemIndex == dragItem.Index) { return; } if (dragItem.Index < itemIndex) itemIndex++; else itemIndex = dragIndex + i; saveTab insertVItem = new saveTab(vdragItem); steam_srch.recentInputList.Insert(itemIndex, insertVItem); steam_srch.recentInputList.Remove(vdragItem); ListViewItem insertItem = (ListViewItem)dragItem.Clone(); recentListView.Items.Insert(itemIndex, insertItem); recentListView.Items.Remove(dragItem); insertItem.Selected = true; } }
/// <summary> /// 放下事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void listView_DragDrop(object sender, DragEventArgs e) { ListView lv = (ListView)(sender); string src = ""; string dest = ""; statusLabel.Text = "拖动结束,开始移动。"; //判断是否选择拖放的项, //选择拖动数为0 if (lv.SelectedItems.Count == 0) { return; } else if (lv.SelectedItems.Count != 1) { statusLabel.Text = "拖动图片时只能选择一张图片。"; return; } //定义项的坐标点并获取目的item Point cp = lv.PointToClient(new Point(e.X, e.Y)); ListViewItem destItem = lv.GetItemAt(cp.X, cp.Y); if (destItem == null) { statusLabel.Text = "拖动目的位置坐标必须在item上,表示移动到该item之前"; return; } int destIndex = destItem.Index; dest = destItem.Text; //不需要移动 if (destIndex == lv.SelectedItems[0].Index) { return; } int appCount = 0; //获取需要拖动的item ListViewItem selItem = (ListViewItem)lv.SelectedItems[0].Clone(); src = selItem.Text; if (lv.SelectedItems[0].Index < destIndex) { appCount = lv.Items.Count - destIndex; destIndex--; } else { appCount = lv.Items.Count - destIndex - 1; } lv.Items.Remove(lv.SelectedItems[0]); //所有最后需附加的item ListViewItem[] appendItems = new ListViewItem[appCount]; for (int i = destIndex; destIndex < lv.Items.Count; i++) { appendItems[i - destIndex] = (ListViewItem)lv.Items[destIndex].Clone(); lv.Items.RemoveAt(destIndex); } lv.Items.Insert(destIndex++, selItem); for (int i = 0; i < appendItems.GetLength(0); i++) { lv.Items.Insert(destIndex++, appendItems[i]); } statusLabel.Text = "移动 " + src + " 至 " + dest + " 之前。"; }
/// <summary> /// Handles the DragDrop event of the listViewPlaybackSequence control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.Windows.Forms.DragEventArgs"/> instance containing the event data.</param> /// <remarks>Documented by Dev02, 2008-03-29</remarks> private void listViewPlaybackSequence_DragDrop(object sender, DragEventArgs e) { //Return if the items are not selected in the ListView control. if (listViewPlaybackSequence.SelectedItems.Count == 0) { return; } //Returns the location of the mouse pointer in the ListView control. Point cp = listViewPlaybackSequence.PointToClient(new Point(e.X, e.Y)); //Obtain the item that is located at the specified location of the mouse pointer. ListViewItem dragToItem = listViewPlaybackSequence.GetItemAt(cp.X, cp.Y); if (dragToItem == null) { return; } //Obtain the index of the item at the mouse pointer. int dragIndex = dragToItem.Index; ListViewItem[] sel = new ListViewItem[listViewPlaybackSequence.SelectedItems.Count]; for (int i = 0; i <= listViewPlaybackSequence.SelectedItems.Count - 1; i++) { sel[i] = listViewPlaybackSequence.SelectedItems[i]; } for (int i = 0; i < sel.GetLength(0); i++) { //Obtain the ListViewItem to be dragged to the target location. ListViewItem dragItem = sel[i]; int itemIndex = dragIndex; if (itemIndex == dragItem.Index) { return; } if (dragItem.Index < itemIndex) itemIndex++; else itemIndex = dragIndex + i; //Insert the item at the mouse pointer. ListViewItem insertItem = (ListViewItem)dragItem.Clone(); listViewPlaybackSequence.Items.Insert(itemIndex, insertItem); //Removes the item from the initial location while //the item is moved to the new location. listViewPlaybackSequence.Items.Remove(dragItem); } }
private void modView_DragDrop(object sender, DragEventArgs e) { int dragIndex = modView.InsertionMark.Index + (modView.InsertionMark.AppearsAfterItem ? 1 : 0); if (modView.Items.Count <= 0) dragIndex = 0; if (e.Data.GetDataPresent( "System.Windows.Forms.ListView+SelectedListViewItemCollection") && dragIndex >= 0) { // Return if the items are not selected in the ListView control. if (modView.SelectedItems.Count == 0) { return; } // Returns the location of the mouse pointer in the ListView control. Point cp = modView.PointToClient(new Point(e.X, e.Y)); //if (modView.InsertionMark.AppearsAfterItem) // dragIndex++; ListViewItem[] sel = new ListViewItem[modView.SelectedItems.Count]; for (int i = 0; i <= modView.SelectedItems.Count - 1; i++) { sel[i] = modView.SelectedItems[i]; } for (int i = 0; i < sel.GetLength(0); i++) { // Obtain the ListViewItem to be dragged to the target location. ListViewItem dragItem = sel[i]; int itemIndex = dragIndex; if (itemIndex == dragItem.Index) { return; } //if (dragItem.Index < itemIndex) // itemIndex++; //else // itemIndex = dragIndex + i; // Insert the item at the mouse pointer. ListViewItem insertItem = (ListViewItem)dragItem.Clone(); if (itemIndex >= modView.Items.Count) itemIndex = modView.Items.Count; modView.Items.Insert(itemIndex, insertItem); // Removes the item from the initial location while // the item is moved to the new location. modView.Items.Remove(dragItem); } SaveModList(); } else if (e.Data.GetDataPresent("FileDrop")) { string[] files = (string[])e.Data.GetData("FileDrop"); e.Effect = DragDropEffects.Copy; AddMods(files, dragIndex); } else { e.Effect = DragDropEffects.None; modView.InsertionMark.Index = -1; } }
private void lvPlays_DragDrop(object sender, DragEventArgs e) { // Return if the items are not selected in the ListView control. if (lvAvailable.SelectedItems.Count == 0) { return; } ListViewItem[] sel = new ListViewItem[lvAvailable.SelectedItems.Count]; for (int i = 0; i <= lvAvailable.SelectedItems.Count - 1; i++) { sel[i] = lvAvailable.SelectedItems[i]; } for (int i = 0; i < sel.GetLength(0); i++) { // Obtain the ListViewItem to be dragged to the target location. ListViewItem dragItem = sel[i]; ListViewItem insertItem = (ListViewItem)dragItem.Clone(); lvPlays.Items.Add(insertItem); // Removes the item from the initial location while // the item is moved to the new location. lvAvailable.Items.Remove(dragItem); } }
protected override void OnDragDrop(DragEventArgs drgevent) { base.OnDragDrop(drgevent); if (!DragAndDropEnabled) return; if (SelectedItems.Count == 0) return; var cp = PointToClient(new Point(drgevent.X, drgevent.Y)); var dragToItem = GetItemAt(cp.X, cp.Y); if (dragToItem == null) return; int dragIndex = dragToItem.Index; ListViewItem[] sel = new ListViewItem[SelectedItems.Count]; for (var i = 0; i <= SelectedItems.Count - 1; i++) sel[i] = SelectedItems[i]; int min = -1; int max = -1; for (var i = 0; i < sel.GetLength(0); i++) { ListViewItem dragItem = sel[i]; dragItem.Selected = false; int itemIndex = dragIndex; if (itemIndex == dragItem.Index) return; if (dragItem.Index < itemIndex) itemIndex++; else itemIndex = dragIndex + i; var insertItem = (ListViewItem) dragItem.Clone(); insertItem.Selected = true; int oldidx = dragItem.Index; int newidx = itemIndex; Items.Insert(itemIndex, insertItem); Items.Remove(dragItem); if ((min == -1) || (Math.Min(oldidx, newidx) < min)) min = Math.Min(oldidx, newidx); if ((max == -1) || (Math.Max(oldidx, newidx) > max)) max = Math.Max(oldidx, newidx); if (AfterDragAndDropItem != null) AfterDragAndDropItem(this, new AfterDragAndDropItemEventArgs(insertItem, oldidx, newidx)); } if (AfterDragAndDrop != null) AfterDragAndDrop(this, new AfterDragAndDropEventArgs(min, max)); }
private void mnMoveTo_Click(object sender, EventArgs e) { var f = new FInputBox(); if (f.Demana("Position", "New position :", "0") != DialogResult.OK) return; int newpos; if (!int.TryParse(f.Value, out newpos)) { MessageBox.Show("Invalid number"); return; } if (newpos <= 0) newpos = 1; if (newpos > listView1.Items.Count) newpos = listView1.Items.Count; var minIndex = -1; var maxIndex = -1; var dragIndex = newpos - 1; var sel = new ListViewItem[listView1.SelectedItems.Count]; for (var i = 0; i <= listView1.SelectedItems.Count - 1; i++) sel[i] = listView1.SelectedItems[i]; for (var i = 0; i < sel.GetLength(0); i++) { var dragItem = sel[i]; var itemIndex = dragIndex; if (dragItem.Index < itemIndex) itemIndex++; else itemIndex = dragIndex + i; var insertItem = (ListViewItem)dragItem.Clone(); var oldidx = dragItem.Index; var newidx = itemIndex; if ((minIndex == -1) || (Math.Min(oldidx, newidx) < minIndex)) minIndex = Math.Min(oldidx, newidx); if ((maxIndex == -1) || (Math.Max(oldidx, newidx) > maxIndex)) maxIndex = Math.Max(oldidx, newidx); if (newpos >= listView1.Items.Count) // Add to end listView1.Items.Add(insertItem); else listView1.Items.Insert(itemIndex, insertItem); // insert into position listView1.Items.Remove(dragItem); } RenumberChannels(minIndex, maxIndex); }
private void codeOutput_DragDrop(object sender, DragEventArgs e) { //Return if the items are not selected in the ListView control. if (codeOutput.SelectedItems.Count == 0) { return; } //Returns the location of the mouse pointer in the ListView control. System.Drawing.Point cp = codeOutput.PointToClient(new System.Drawing.Point(e.X, e.Y)); //Obtain the item that is located at the specified location of the mouse pointer. ListViewItem dragToItem = codeOutput.GetItemAt(cp.X, cp.Y); if (dragToItem == null) { return; } //Obtain the index of the item at the mouse pointer. int dragToIndex = dragToItem.Index; ListViewItem[] sel = new ListViewItem[codeOutput.SelectedItems.Count]; for (int i = 0; i <= codeOutput.SelectedItems.Count - 1; i++) { sel[i] = codeOutput.SelectedItems[i]; } bool modified = false; for (int i = 0; i < sel.GetLength(0); i++) { //Obtain the ListViewItem to be dragged to the target location. ListViewItem dragItem = sel[i]; int itemIndex = dragToIndex; if (itemIndex == dragItem.Index) { return; } if (dragItem.Index < itemIndex) itemIndex++; else itemIndex = dragToIndex + i; //Insert the item at the mouse pointer. int dragPosition = dragItem.Index; ListViewItem insertItem = (ListViewItem)dragItem.Clone(); codeOutput.SelectedItems.Clear(); codeOutput.Items.Insert(itemIndex, insertItem); //Removes the item from the initial location while //the item is moved to the new location. codeOutput.Items.Remove(dragItem); modified = true; } if (modified) SendModified(); //PSelectedIndex = -1; codeOutput.Items[dragToIndex].Selected = true; codeOutput.FocusedItem = codeOutput.SelectedItems[0]; //codeOutput_SelectedIndexChanged(sender, e); //codeValues.Text = ""; //codeValues.Enabled = false; codeOutput.Click += codeOutput_SelectedIndexChanged; }
private void KaiListView_DragDrop(object sender, DragEventArgs e) { if (SelectedItems.Count == 0) { return; } Point pt = PointToClient (new Point(e.X, e.Y)); ListViewItem lviDragTarget = GetItemAt (pt.X, pt.Y); if (null == lviDragTarget) { return; } ListViewItem[] arrlviSelected = new ListViewItem[SelectedItems.Count]; for (int iItem = 0; iItem <= SelectedItems.Count - 1; iItem++) { arrlviSelected[iItem] = SelectedItems[iItem]; } int iInsertAt = lviDragTarget.Index; for (int iItem = 0; iItem < arrlviSelected.GetLength(0); iItem++) { ListViewItem lviDragItem = arrlviSelected[iItem]; if (iInsertAt == lviDragItem.Index) { return; } if (lviDragTarget.Index > lviDragItem.Index) { iInsertAt++; } else { iInsertAt = lviDragTarget.Index + iItem; } Items.Insert(iInsertAt, (ListViewItem)lviDragItem.Clone()); Items.Remove(lviDragItem); } }