コード例 #1
0
ファイル: frmSchemeEditor.cs プロジェクト: ashsvis/RemXcs
        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;
        }
コード例 #2
0
ファイル: frmSchemeEditor.cs プロジェクト: ashsvis/RemXcs
 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);
         }
     }
 }