예제 #1
0
        private void Control_MouseMove(object sender, EventArgs e)
        {
            var panel = sender as SuperPanel;

            while (sender != this && panel == null)
            {
                sender = (sender as Control).Parent;
                panel  = sender as SuperPanel;
            }

            if (panel != null)
            {
                hoveredPanel = panel;

                if (!panel.IsHoveredOver)
                {
                    panel.IsHoveredOver = true;
                    panel.Invalidate();
                    panel.Update();
                }

                if (draggedPanel != null)
                {
                    ReorderRows();
                }
            }

            SetDragCursor();
        }
예제 #2
0
 private void ReleaseDragCursor()
 {
     if (draggedPanel != null)
     {
         draggedPanel.Show();
     }
     Cursor       = DefaultCursor;
     panelCursor  = null;
     draggedPanel = null;
 }
예제 #3
0
        private void AssignRowEventHandlers(SuperPanel panel)
        {
            panel.DragOver += Control_DragOver;
            panel.DragOver += Control_MouseMove;

            panel.DragDrop += Row_DragDrop;

            panel.DragEnter += Control_DragEnter;
            panel.DragEnter += Control_MouseMove;

            AssignMouseMoveHandler(panel);
        }
예제 #4
0
        private void RowTemplate_MouseLeave(object sender, EventArgs e)
        {
            foreach (SuperPanel row in this.Controls)
            {
                if (row.IsHoveredOver)
                {
                    row.IsHoveredOver = false;
                    row.Invalidate();
                    row.Update();
                }
            }

            hoveredPanel = null;
        }
예제 #5
0
        private void DragAnchor_MouseDown(object sender, MouseEventArgs e)
        {
            draggedPanel = (sender as Control).Parent as SuperPanel;
            if (draggedPanel != null)
            {
                // Remember the point where the mouse down occurred.
                // The DragSize indicates the size that the mouse can move
                // before a drag event should be started.
                var dragSize = SystemInformation.DragSize;

                // Create a rectangle using the DragSize, with the mouse position being
                // at the center of the rectangle.
                dragBoxFromMouseDown = new Rectangle(new Point(e.X - (dragSize.Width / 2), e.Y - (dragSize.Height / 2)),
                                                     dragSize);

                SetDragCursor();
            }
        }
예제 #6
0
        private static SuperPanel CreateRowPanel(int index, int rowHeight, Label orderLabel, ComboBox flightProblem,
                                                 Panel colorPanel, ComboBox symbol, ComboBox size, CheckBox showLabel, Control addControl, Control removeControl)
        {
            var panel = new SuperPanel
            {
                Location    = new Point(3, 10 + (rowHeight + 10) * index),
                Size        = new Size(875, rowHeight),
                BorderStyle = BorderStyle.None,
                RowIndex    = index
            };

            panel.Controls.Add(orderLabel);
            panel.Controls.Add(flightProblem);
            panel.Controls.Add(colorPanel);
            panel.Controls.Add(symbol);
            panel.Controls.Add(size);
            panel.Controls.Add(showLabel);
            panel.Controls.Add(addControl);
            panel.Controls.Add(removeControl);

            panel.AllowDrop = true;

            return(panel);
        }