private void frmChildMdi_KeyDown(object sender, KeyEventArgs e) { if (e.Control) { controlPressed = true; } Single step = 8; if (controlPressed) { step = 1; } if (e.KeyCode == Keys.Up) { FileChanged = true; SelList.MoveUp(step); this.Refresh(); } else if (e.KeyCode == Keys.Down) { FileChanged = true; SelList.MoveDown(step); this.Refresh(); } else if (e.KeyCode == Keys.Left) { FileChanged = true; SelList.MoveLeft(step); this.Refresh(); } else if (e.KeyCode == Keys.Right) { FileChanged = true; SelList.MoveRight(step); this.Refresh(); } else if (e.KeyCode == Keys.Delete) // удаление выделенных объектов { if ((SelList.Count > 0) && (MessageBox.Show("Удалить выделенные объекты?", "Редактор примитивов", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)) { FileChanged = true; foreach (Draws drw in SelList) { DrawsList.Remove(drw); } SelList.Clear(); GC.Collect(); this.Refresh(); } } e.Handled = true; }
private void drawBox_MouseDown(object sender, MouseEventArgs e) { FstPnt = new PointF(e.X, e.Y); LstPnt = FstPnt; if (!tsbSelObj.Checked) { SelList.Clear(); } if (tsbSelObj.Checked || (e.Button == MouseButtons.Right)) { Draws drw = DrawsList.PointInFigure(FstPnt); if (drw != null) { // элемент был выбран мышкой markerIndex = drw.MarkerIndex; if (markerIndex >= 0) { foreach (Draws d in SelList) { d.MarkerIndex = markerIndex; // раздача всем остальным } } if (controlPressed) { if (SelList.IndexOf(drw) >= 0) { // удаление из списка уже выделенного элемента if (SelList.Count > 1) // последний элемент при Ctrl не убирается { drw.Selected = false; SelList.Remove(drw); } } else { SelList.Add(drw); // добавление к списку } } else { if (!SelList.FigureInList(drw)) { SelList.Clear(); // очистка списков SelList.Add(drw); // выделение одного элемента } } this.Refresh(); } else { SelList.Clear(); // очистка списков drawBox.Capture = true; // захват мышки } } // вызов контекстного меню if ((e.Button == MouseButtons.Right)) { if (SelList.Count > 0) { Draws drw = DrawsList.PointInFigure(FstPnt); bool ModifyFiguresNode = (drw != null) && drw.NodeChanging; if (drw != null) { markerIndex = drw.MarkerIndex; SelMrkPnt = e.Location; } else { markerIndex = 0; } miAddFigureNode.Visible = ModifyFiguresNode && (drw.MarkerIndex == 0); if (drw is Polygones) { miDeleteFigureNode.Visible = ModifyFiguresNode && (drw.MarkerIndex < 0) && (((Polygones)drw).Points.Count > 2); } else { miDeleteFigureNode.Visible = false; } miBeginChangeNodes.Visible = (SelList.Count == 1) && (drw is Polygones) && drw.CanNodeChanging() && !drw.NodeChanging; miEndChangeNodes.Visible = (SelList.Count == 1) && (drw is Polygones) && drw.NodeChanging; miGroupFigures.Enabled = (SelList.Count > 1); miUngroupFigures.Enabled = drw is Groups; cmsFigPopup.Tag = drw; cmsFigPopup.Show(drawBox, e.Location); } else { cmsBkgPopup.Show(drawBox, e.Location); } } }