private void selectedGroups_ItemDrag(object sender, ItemDragEventArgs e) { FieldMetaDataTreeNode node = e.Item as FieldMetaDataTreeNode; if (node != null) { selectedGroups.DoDragDrop(new FieldMetaDataDragDropObject(node.Field, selectedGroups), DragDropEffects.Move); Invalidate(); } }
private void removeGroup_Click(object sender, EventArgs e) { FieldMetaDataTreeNode selectedNode = selectedGroups.SelectedNode as FieldMetaDataTreeNode; if (selectedNode != null) { FieldMetaData field = selectedNode.Field; _selectedGroupFields.Remove(field); _availableGroupFields.Add(field); RebuildSelectedGroupsTree(); selectedGroups.Focus(); } removeGroup.Enabled = selectedGroups.SelectedNode != null; }
private void RebuildSelectedGroupsTree() { selectedGroups.BeginUpdate(); selectedGroups.Nodes.Clear(); FieldMetaDataTreeNode parentNode = null; foreach (FieldMetaData fieldMetaData in _selectedGroupFields) { if (parentNode == null) { parentNode = new FieldMetaDataTreeNode(fieldMetaData); selectedGroups.Nodes.Add(parentNode); } else { FieldMetaDataTreeNode child = new FieldMetaDataTreeNode(fieldMetaData); parentNode.Nodes.Add(child); parentNode = child; } } selectedGroups.EndUpdate(); selectedGroups.ExpandAll(); }
private void selectedGroups_DragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(FieldMetaDataDragDropObject.Format.Name)) { FieldMetaDataDragDropObject ddoField = (FieldMetaDataDragDropObject)e.Data.GetData(FieldMetaDataDragDropObject.Format.Name); Point localPoint = selectedGroups.PointToClient(new Point(e.X, e.Y)); // Find position of the drop FieldMetaDataTreeNode parentNode = (FieldMetaDataTreeNode)selectedGroups.GetNodeAt(localPoint); if (parentNode != null) { int parentIndex = _selectedGroupFields.IndexOf(parentNode.Field); if (ddoField.Source == selectedGroups) { //need to remove existing node _selectedGroupFields.Remove(ddoField.Data); } _selectedGroupFields.Insert(parentIndex, ddoField.Data); } else // First node or not over a node { if (ddoField.Source == selectedGroups) { //need to remove existing node _selectedGroupFields.Remove(ddoField.Data); } _selectedGroupFields.Add(ddoField.Data); } RebuildSelectedGroupsTree(); // Remove the old field from the list if (ddoField.Source == availableGroups) { _availableGroupFields.Remove(ddoField.Data); } } }