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(); }
private void ReleaseDragCursor() { if (draggedPanel != null) { draggedPanel.Show(); } Cursor = DefaultCursor; panelCursor = null; draggedPanel = null; }
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); }
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; }
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(); } }
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); }