/// <summary> /// 更新一个主工具栏项目 /// </summary> /// <param name="formEntity"></param> public void Update(ToolStripItemAbstract entity) { Debug.Assert(entity != null, "ToolStripItemAbstract 为 null"); if (entity == null) { return; } //更新索引信息 XElement element = _indexXml.XPathSelectElement(String.Format(XPATH_Index_SelectToolStrip, entity.Id)); Debug.Assert(element != null, "更新主工具栏项目索引时未找到指定主菜单的索引记录"); if (element != null) { element.ReplaceWith(GetArchiveIndex(entity)); SaveIndexFile(); string xml = entity.ToXml(); XElement xElement = XElement.Parse(xml); //更新实体文件 _packageService.Current.AddFileContent(xml, Path.Combine(Constant.PACKAGE_NAVIGATION_TOOLSTRIP_FOLDER, entity.Id)); _cachingService.Add(entity.Id, xElement); //发布事件 ToolStripEventArgs args = new ToolStripEventArgs(entity); _eventAggregator.GetEvent <ToolStripItemUpdatedEvent>().Publish(args); } }
/// <summary> /// 删除菜单项,及其所有子项 /// </summary> /// <param name="code"></param> public void Delete(ToolStripItemAbstract entity) { Debug.Assert(entity != null, "entity 为 null"); if (entity == null) { return; } //移除索引信息 XElement element = _indexXml.XPathSelectElement(String.Format(XPATH_Index_SelectToolStrip, entity.Id)); Debug.Assert(element != null, "删除主工具栏索引时未找到指定主菜单的索引记录"); if (element != null) { element.Remove(); SaveIndexFile(); //移除实体文件 _packageService.Current.DeleteFile(Path.Combine(Constant.PACKAGE_NAVIGATION_TOOLSTRIP_FOLDER, entity.Id)); _cachingService.Remove(entity.Id); //发布事件 ToolStripEventArgs args = new ToolStripEventArgs(entity); _eventAggregator.GetEvent <ToolStripItemRemovedEvent>().Publish(args); } }
public SEToolStripButtonDev(ToolStripItemAbstract item) { ToolStripButtonEntity entity = (ToolStripButtonEntity)item; this.Text = entity.Text; this.DisplayStyle = (ToolStripItemDisplayStyle)Enum.Parse(typeof(ToolStripItemDisplayStyle), ((int)entity.DisplayStyle).ToString()); this.TextImageRelation = (TextImageRelation)Enum.Parse(typeof(TextImageRelation), ((int)entity.TextImageRelation).ToString()); this.Alignment = (ToolStripItemAlignment)Enum.Parse(typeof(ToolStripItemAlignment), ((int)entity.Aligment).ToString()); this.ToolTipText = entity.ToolTipText; if (entity.Image != null && entity.Image != String.Empty) { FileInfo fi = new FileInfo(entity.Image); Image image; if (fi.Exists) { image = DrawingTool.GetImage(fi.FullName); } else { image = new Bitmap(16, 16); using (Graphics g = Graphics.FromImage(image)) { g.DrawRectangle(Pens.Red, 0, 0, image.Width - 1, image.Height - 1); g.DrawLine(Pens.Red, 0, 0, image.Width, image.Height); g.DrawLine(Pens.Red, image.Width, 0, 0, image.Height); } } this.Image = image; } }
/// <summary> /// 添加一个菜单项 /// </summary> /// <param name="entity"></param> public void Add(ToolStripItemAbstract entity) { Debug.Assert(entity != null, "entity 为 null"); if (entity == null) { return; } //添加索引信息 _indexXml.XPathSelectElement(XPATH_Index_ToolStrip).Add(GetArchiveIndex(entity)); string xml = entity.ToXml(); XElement xElement = XElement.Parse(xml); SaveIndexFile(); //添加数据实体文件 _packageService.Current.AddFileContent(xml, Path.Combine(Constant.PACKAGE_NAVIGATION_TOOLSTRIP_FOLDER, entity.Id)); _cachingService.Add(entity.Id, xElement); //发布事件 ToolStripEventArgs args = new ToolStripEventArgs(entity); _eventAggregator.GetEvent <ToolStripItemAddedEvent>().Publish(args); }
public SEToolStripLabelDev(ToolStripItemAbstract item) { ToolStripLabelEntity entity = (ToolStripLabelEntity)item; this.Text = entity.Text; this.Alignment = (ToolStripItemAlignment)Enum.Parse(typeof(ToolStripItemAlignment), ((int)entity.Aligment).ToString()); this.ToolTipText = entity.ToolTipText; }
private void CreateToolStripItem() { ToolStripItemEntityProvideAttribute attribute = this.ddlControlType.SelectedValue as ToolStripItemEntityProvideAttribute; if (attribute != null) { this.ToolStripElement = _toolStripItemEntityTypesFactory.CreateInstance(attribute); } }
void IArchiveService.Delete(object obj) { ToolStripItemAbstract entity = obj as ToolStripItemAbstract; Debug.Assert(entity != null, "entity为null"); if (entity != null) { Delete(entity); } }
public static ToolStripItemAbstract GetToolStripItemDevByXml(string strXml) { ToolStripItemAbstract toolStripItem = null; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(strXml); toolStripItem = (ToolStripItemAbstract)FormElementEntityDevTypes.Instance.CreateInstance(Convert.ToInt32(xmlDoc.SelectSingleNode("Element/ControlType").InnerText)); toolStripItem.FromXml(strXml); return(toolStripItem); }
/// <summary> /// 获取用于存储在XML索引文件中的索引节点 /// </summary> /// <param name="entity"></param> /// <returns></returns> private XElement GetArchiveIndex(ToolStripItemAbstract entity) { Debug.Assert(entity != null, "entity 为 null"); XElement ele = new XElement("Entity", new XAttribute("Id", entity.Id), new XAttribute("Name", entity.Name), new XAttribute("Code", entity.Code), new XAttribute("GroupId", entity.GroupId), new XAttribute("Sys", entity.Sys)); //new XAttribute("ParentId", entity.ParentId)); //计划将来工具栏项目支持多级 return(ele); }
/// <summary> /// 获取工具栏所有项 /// </summary> /// <param name="parentId"></param> /// <returns></returns> public ToolStripItemEntityCollection GetEntityList() { XElement[] entityElements = _indexXml.XPathSelectElements(XPATH_Index_ToolStrip_Entity).ToArray(); ToolStripItemEntityCollection list = new ToolStripItemEntityCollection(); foreach (XElement element in entityElements) { ToolStripItemAbstract entity = GetEntity(element.Attribute("Id").Value); if (entity != null) { list.Add(entity); } } return(list); }
/// <summary> /// 提交 /// 根据MenuEntity的Id进行判断,如果已存在,调用update,如果不存在,调用add /// </summary> /// <param name="dataEntity"></param> public void Commit(ToolStripItemAbstract entity) { Debug.Assert(entity != null, "enumEntity 为 null"); if (entity == null) { return; } if (EntityExistById(entity.Id)) { Update(entity); } else { Add(entity); } }
/// <summary> /// 获取一个工具栏项实例(根据Id) /// </summary> /// <param name="id"></param> /// <returns></returns> public ToolStripItemAbstract GetEntity(string id) { XElement entityElement = (XElement)_cachingService.GetData(id); string strEntity; if (entityElement == null) { string file = Path.Combine(Constant.PACKAGE_NAVIGATION_TOOLSTRIP_FOLDER, id); bool fileExist = _packageService.Current.Container(file); Debug.Assert(fileExist, "工具栏项文件不存在"); if (fileExist == false) { return(null); } strEntity = _packageService.Current.GetFileContent(file); entityElement = XElement.Parse(strEntity); _cachingService.Add(id, entityElement); } else { strEntity = entityElement.ToString(); } int controlType = Convert.ToInt32(entityElement.Element("ControlType").Value); ToolStripItemAbstract entity = _toolStripItemEntityTypesFactory.CreateInstance(controlType); if (entity == null) { Debug.Assert(false, "_toolStripItemsContainer.Create(controlType) 失败,返回了null"); throw new Exception(); } entity.FromXml(strEntity); return(entity); }
public ToolStripEventArgs(ToolStripItemAbstract entity) { this.Entity = entity; }
private void SubscribeEvent() { //订阅数据实体的增删改事件,以更新呈现 #region Page #region ToolStripPageAddedEvent SubscriptionToken toolStripPageAddedEventToken = _eventAggregator.GetEvent <ToolStripPageAddedEvent>().Subscribe((e) => { _controller.Add(e.Entity, (node) => { if (node.Codon.DataBoundType == typeof(ToolStripItemFolder)) { return(true); } else { return(false); } }); }); #endregion #region ToolStripPageUpdatedEvent SubscriptionToken toolStripPageUpdatedEventToken = _eventAggregator.GetEvent <ToolStripPageUpdatedEvent>().Subscribe((e) => { _controller.Update(e.Entity); }); #endregion #region ToolStripPageRemovedEvent SubscriptionToken toolStripPageRemovedEventToken = _eventAggregator.GetEvent <ToolStripPageRemovedEvent>().Subscribe((e) => { _controller.Remove(e.Entity); }); #endregion #region ToolStripPageMoveBeforeEvent SubscriptionToken toolStripPageMoveBeforeEventToken = _eventAggregator.GetEvent <ToolStripPageMoveBeforeEvent>().Subscribe((e) => { _controller.MoveBefore( (source) => { if (source.Codon.DataBoundType == typeof(ToolStripPageEntity)) { ToolStripPageEntity toolStripPageEntity = (ToolStripPageEntity)source.DataBoundItem; return(toolStripPageEntity.Id == e.Id); } else { return(false); } }, (target) => { if (target.Codon.DataBoundType == typeof(ToolStripPageEntity)) { ToolStripPageEntity toolStripPageEntity = (ToolStripPageEntity)target.DataBoundItem; return(toolStripPageEntity.Id == e.BeforeId); } else { return(false); } } ); }); #endregion #region ToolStripPageMoveAfterEvent SubscriptionToken toolStripPageMoveAfterEventToken = _eventAggregator.GetEvent <ToolStripPageMoveAfterEvent>().Subscribe((e) => { _controller.MoveAfter( (source) => { if (source.Codon.DataBoundType == typeof(ToolStripPageEntity)) { ToolStripPageEntity toolStripPageEntity = (ToolStripPageEntity)source.DataBoundItem; return(toolStripPageEntity.Id == e.Id); } else { return(false); } }, (target) => { if (target.Codon.DataBoundType == typeof(ToolStripPageEntity)) { ToolStripPageEntity toolStripPageEntity = (ToolStripPageEntity)target.DataBoundItem; return(toolStripPageEntity.Id == e.AfterId); } else { return(false); } } ); }); #endregion #endregion #region Group #region ToolStripGroupAddedEvent SubscriptionToken toolStripGroupAddedEventToken = _eventAggregator.GetEvent <ToolStripGroupAddedEvent>().Subscribe((e) => { _controller.Add(e.Entity, (node) => { if (node.Codon.DataBoundType == typeof(ToolStripPageEntity)) { ToolStripPageEntity entity = (ToolStripPageEntity)node.DataBoundItem; return(e.Entity.PageId == entity.Id); } else { return(false); } }); }); #endregion #region ToolStripGroupUpdatedEvent SubscriptionToken toolStripGroupUpdatedEventToken = _eventAggregator.GetEvent <ToolStripGroupUpdatedEvent>().Subscribe((e) => { _controller.Update(e.Entity); }); #endregion #region ToolStripGroupRemovedEvent SubscriptionToken toolStripGroupRemovedEventToken = _eventAggregator.GetEvent <ToolStripGroupRemovedEvent>().Subscribe((e) => { _controller.Remove(e.Entity); }); #endregion #region ToolStripGroupMoveBeforeEvent SubscriptionToken toolStripGroupMoveBeforeEventToken = _eventAggregator.GetEvent <ToolStripGroupMoveBeforeEvent>().Subscribe((e) => { _controller.MoveBefore( (source) => { if (source.Codon.DataBoundType == typeof(ToolStripGroupEntity)) { ToolStripGroupEntity toolStripGroupEntity = (ToolStripGroupEntity)source.DataBoundItem; return(toolStripGroupEntity.Id == e.Id); } else { return(false); } }, (target) => { if (target.Codon.DataBoundType == typeof(ToolStripGroupEntity)) { ToolStripGroupEntity toolStripGroupEntity = (ToolStripGroupEntity)target.DataBoundItem; return(toolStripGroupEntity.Id == e.BeforeId); } else { return(false); } } ); }); #endregion #region ToolStripGroupMoveAfterEvent SubscriptionToken toolStripGroupMoveAfterEventToken = _eventAggregator.GetEvent <ToolStripGroupMoveAfterEvent>().Subscribe((e) => { _controller.MoveAfter( (source) => { if (source.Codon.DataBoundType == typeof(ToolStripGroupEntity)) { ToolStripGroupEntity toolStripGroupEntity = (ToolStripGroupEntity)source.DataBoundItem; return(toolStripGroupEntity.Id == e.Id); } else { return(false); } }, (target) => { if (target.Codon.DataBoundType == typeof(ToolStripGroupEntity)) { ToolStripGroupEntity toolStripGroupEntity = (ToolStripGroupEntity)target.DataBoundItem; return(toolStripGroupEntity.Id == e.AfterId); } else { return(false); } } ); }); #endregion #endregion #region Items #region ToolStripItemAddedEvent SubscriptionToken toolStripItemAddedEventToken = _eventAggregator.GetEvent <ToolStripItemAddedEvent>().Subscribe((e) => { _controller.Add(e.Entity, (node) => { if (node.Codon.DataBoundType == typeof(ToolStripGroupEntity)) { ToolStripGroupEntity entity = (ToolStripGroupEntity)node.DataBoundItem; return(e.Entity.GroupId == entity.Id); } else { return(false); } }); }); #endregion #region ToolStripItemRemovedEvent SubscriptionToken toolStripItemRemovedEventToken = _eventAggregator.GetEvent <ToolStripItemRemovedEvent>().Subscribe((e) => { _controller.Remove(e.Entity); }); #endregion #region ToolStripItemUpdatedEvent SubscriptionToken toolStripItemUpdatedEventToken = _eventAggregator.GetEvent <ToolStripItemUpdatedEvent>().Subscribe((e) => { _controller.Update(e.Entity); }); #endregion #region ToolStripItemMoveBeforeEvent SubscriptionToken toolStripItemMoveBeforeEventToken = _eventAggregator.GetEvent <ToolStripItemMoveBeforeEvent>().Subscribe((e) => { _controller.MoveBefore( (source) => { if (source.Codon.DataBoundType == typeof(ToolStripItemAbstract)) { ToolStripItemAbstract toolStripEntity = (ToolStripItemAbstract)source.DataBoundItem; return(toolStripEntity.Id == e.Id); } else { return(false); } }, (target) => { if (target.Codon.DataBoundType == typeof(ToolStripItemAbstract)) { ToolStripItemAbstract toolStripEntity = (ToolStripItemAbstract)target.DataBoundItem; return(toolStripEntity.Id == e.BeforeId); } else { return(false); } } ); //_navigationTreeController.Select((node) => //{ // if (node.Codon.DataBoundType == typeof(ToolStripItemAbstract)) // { // ToolStripItemAbstract menuEntity = (ToolStripItemAbstract)node.DataBoundItem; // return menuEntity.Id == e.Id; // } // else // return false; //}); }); #endregion #region ToolStripItemMoveAfterEvent SubscriptionToken toolStripItemMoveAfterEventToken = _eventAggregator.GetEvent <ToolStripItemMoveAfterEvent>().Subscribe((e) => { _controller.MoveAfter( (source) => { if (source.Codon.DataBoundType == typeof(ToolStripItemAbstract)) { ToolStripItemAbstract toolStripEntity = (ToolStripItemAbstract)source.DataBoundItem; return(toolStripEntity.Id == e.Id); } else { return(false); } }, (target) => { if (target.Codon.DataBoundType == typeof(ToolStripItemAbstract)) { ToolStripItemAbstract toolStripEntity = (ToolStripItemAbstract)target.DataBoundItem; return(toolStripEntity.Id == e.AfterId); } else { return(false); } } ); //_navigationTreeController.Select((node) => //{ // if (node.Codon.DataBoundType == typeof(ToolStripItemAbstract)) // { // ToolStripItemAbstract menuEntity = (ToolStripItemAbstract)node.DataBoundItem; // return menuEntity.Id == e.Id; // } // else // return false; //}); }); #endregion #endregion #region * Unsubscribe * this.Disposed += (sender, e) => { _eventAggregator.GetEvent <ToolStripPageAddedEvent>().Unsubscribe(toolStripPageAddedEventToken); _eventAggregator.GetEvent <ToolStripPageUpdatedEvent>().Unsubscribe(toolStripPageUpdatedEventToken); _eventAggregator.GetEvent <ToolStripPageRemovedEvent>().Unsubscribe(toolStripPageRemovedEventToken); _eventAggregator.GetEvent <ToolStripPageMoveBeforeEvent>().Unsubscribe(toolStripPageMoveBeforeEventToken); _eventAggregator.GetEvent <ToolStripPageMoveAfterEvent>().Unsubscribe(toolStripPageMoveAfterEventToken); _eventAggregator.GetEvent <ToolStripGroupAddedEvent>().Unsubscribe(toolStripGroupAddedEventToken); _eventAggregator.GetEvent <ToolStripGroupUpdatedEvent>().Unsubscribe(toolStripGroupUpdatedEventToken); _eventAggregator.GetEvent <ToolStripGroupRemovedEvent>().Unsubscribe(toolStripGroupRemovedEventToken); _eventAggregator.GetEvent <ToolStripGroupMoveBeforeEvent>().Unsubscribe(toolStripGroupMoveBeforeEventToken); _eventAggregator.GetEvent <ToolStripGroupMoveAfterEvent>().Unsubscribe(toolStripGroupMoveAfterEventToken); _eventAggregator.GetEvent <ToolStripItemAddedEvent>().Unsubscribe(toolStripItemAddedEventToken); _eventAggregator.GetEvent <ToolStripItemRemovedEvent>().Unsubscribe(toolStripItemRemovedEventToken); _eventAggregator.GetEvent <ToolStripItemUpdatedEvent>().Unsubscribe(toolStripItemUpdatedEventToken); _eventAggregator.GetEvent <ToolStripItemMoveBeforeEvent>().Unsubscribe(toolStripItemMoveBeforeEventToken); _eventAggregator.GetEvent <ToolStripItemMoveAfterEvent>().Unsubscribe(toolStripItemMoveAfterEventToken); }; #endregion }
private void InitController() { _controller = new TypeBinderTreeViewController(this.treeView); #region ImageList //节点的小图标ImageList ImageList _imageList = new ImageList(); _imageList.Images.Add(IconsLibrary.Folder); //0 _imageList.Images.Add(IconsLibrary.ActiveTabItem); //1 _imageList.Images.Add(IconsLibrary.GroupItem); //2 _imageList.Images.Add(IconsLibrary.Menu); //3 _controller.ImageList = _imageList; #endregion #region Codon _controller.AddNodeCodon(new TypeBinderTreeViewNodeCodon( typeof(ToolStripItemFolder), typeof(ToolStripPageEntity), ToolStripItemFolder.Property_Text, ToolStripItemFolder.Property_Items) { ImageIndex = TreeImages.Folder, ContextMenuStrip = _treeMenuToolStripItemFolder.View }); TypeBinderTreeViewNodeCodon pageCodon = new TypeBinderTreeViewNodeCodon( typeof(ToolStripPageEntity), typeof(ToolStripGroupEntity), ToolStripItemAbstract.Property_Name) { ImageIndex = TreeImages.ToolStripPageEntity, ActOnSubClass = true, ContextMenuStrip = _treeMenuToolStripPage.View, RelationChildMember = ToolStripPageEntity.Property_Id }; pageCodon.GetItemsFunc = (pageEntity) => { return(ToolStripArchive.Instance.GetGroupCollection(((ToolStripPageEntity)pageEntity).Id)); }; _controller.AddNodeCodon(pageCodon); TypeBinderTreeViewNodeCodon groupCodon = new TypeBinderTreeViewNodeCodon( typeof(ToolStripGroupEntity), typeof(ToolStripItemAbstract), ToolStripItemAbstract.Property_Name) { ImageIndex = TreeImages.ToolStripGroupEntity, ActOnSubClass = true, ContextMenuStrip = _treeMenuToolStripGroup.View, RelationParentMember = ToolStripGroupEntity.Property_PageId, RelationChildMember = ToolStripGroupEntity.Property_Id }; groupCodon.GetItemsFunc = (groupEntity) => { return(ToolStripArchive.Instance.GetEntityList(((ToolStripGroupEntity)groupEntity).Id)); }; _controller.AddNodeCodon(groupCodon); _controller.AddNodeCodon(new TypeBinderTreeViewNodeCodon( typeof(ToolStripItemAbstract), ToolStripItemAbstract.Property_Name) { ActOnSubClass = true,//因为实际运行是Dev结尾的类型 ImageIndex = TreeImages.ToolStripItemAbstract, ContextMenuStrip = _treeMenuToolStripItem.View, RelationParentMember = ToolStripItemAbstract.Property_GroupId }); #endregion _controller.AfterSelect += new TypeBinderTreeViewController.OnAfterSelectHandler(_controller_AfterSelect); #region 处理拖放 treeView.AllowDrop = true; #region CanDragFunc treeView.CanDragFunc = (dragNode) => { //总文件夹不允许拖动 ITypeBinderTreeViewNode binderDragNode = (ITypeBinderTreeViewNode)dragNode; if (binderDragNode.Codon.DataBoundType == typeof(ToolStripItemFolder)) { return(false); } else { return(true); } }; #endregion #region CanDropFunc treeView.CanDropFunc = (dragNode, dropNode) => { ITypeBinderTreeViewNode binderDragNode = (ITypeBinderTreeViewNode)dragNode; ITypeBinderTreeViewNode binderDropNode = (ITypeBinderTreeViewNode)dropNode; //如果拖的是页,那只允许放在页上 if (binderDragNode.Codon.DataBoundType == typeof(ToolStripPageEntity)) { if (binderDropNode.Codon.DataBoundType == typeof(ToolStripPageEntity)) { return(true); } } //如果拖的是分组,允许放在页和分组上 if (binderDragNode.Codon.DataBoundType == typeof(ToolStripGroupEntity)) { if (binderDropNode.Codon.DataBoundType == typeof(ToolStripPageEntity) || binderDropNode.Codon.DataBoundType == typeof(ToolStripGroupEntity)) { return(true); } } //如果拖的是项,允许放在分组和项上 if (binderDragNode.Codon.DataBoundType == typeof(ToolStripItemAbstract)) { if (binderDropNode.Codon.DataBoundType == typeof(ToolStripGroupEntity) || binderDropNode.Codon.DataBoundType == typeof(ToolStripItemAbstract)) { return(true); } } return(false); }; #endregion #region DragDropAction treeView.DragDropAction = (dragNode, dropNode) => { ITypeBinderTreeViewNode binderDragNode = (ITypeBinderTreeViewNode)dragNode; ITypeBinderTreeViewNode binderDropNode = (ITypeBinderTreeViewNode)dropNode; #region 如果拖的是页 //如果拖的是页,那只允许放在页上 //移动拖动的页到放置的页后面 if (binderDragNode.Codon.DataBoundType == typeof(ToolStripPageEntity)) { if (binderDropNode.Codon.DataBoundType == typeof(ToolStripPageEntity)) { //只要调用 _toolStripArchive.MovePageAfter 就行了 //树节点的移动会由相关事件引发 ToolStripPageEntity dragPage = (ToolStripPageEntity)binderDragNode.DataBoundItem; ToolStripPageEntity dropPage = (ToolStripPageEntity)binderDropNode.DataBoundItem; _toolStripArchive.MovePageAfter(dragPage.Id, dropPage.Id); } } #endregion #region 如果拖的是分组 //如果拖的是分组,允许放在页和分组上 if (binderDragNode.Codon.DataBoundType == typeof(ToolStripGroupEntity)) { ToolStripGroupEntity dragGroup = (ToolStripGroupEntity)binderDragNode.DataBoundItem; //放在放置页的最后面 if (binderDropNode.Codon.DataBoundType == typeof(ToolStripPageEntity)) { ToolStripPageEntity dropPage = (ToolStripPageEntity)binderDropNode.DataBoundItem; dragGroup.PageId = dropPage.Id; //确保拖的分组在放的页的最后一项 if (binderDropNode.Items.Count > 0) { ToolStripGroupEntity lastGroup = (ToolStripGroupEntity)binderDropNode.Items[binderDropNode.Items.Count - 1]; _toolStripArchive.MoveGroupAfter(dragGroup.Id, lastGroup.Id); } _toolStripArchive.UpdateGroup(dragGroup); } //放在放置分组的后面,同时注意修改拖动分组所属页到放置分组所属的页上 else if (binderDropNode.Codon.DataBoundType == typeof(ToolStripGroupEntity)) { ToolStripGroupEntity dropGroup = (ToolStripGroupEntity)binderDropNode.DataBoundItem; _toolStripArchive.MoveGroupAfter(dragGroup.Id, dropGroup.Id); if (dragGroup.PageId != dropGroup.PageId) { dragGroup.PageId = dropGroup.PageId; _toolStripArchive.UpdateGroup(dragGroup); } } } #endregion #region 如果拖的是项 //如果拖的是项,允许放在分组和项上 if (binderDragNode.Codon.DataBoundType == typeof(ToolStripItemAbstract)) { ToolStripItemAbstract dragItem = (ToolStripItemAbstract)binderDragNode.DataBoundItem; //放在放置分组的最后面,同时修改拖动项所属分组 //放置分组肯定不是项原来的分组,因为如果把树子节点拖到自己的父节点上什么也不会发生,SETreeView里不允许这种操作 if (binderDropNode.Codon.DataBoundType == typeof(ToolStripGroupEntity)) { ToolStripGroupEntity dropGroup = (ToolStripGroupEntity)binderDropNode.DataBoundItem; dragItem.GroupId = dropGroup.Id; //确保拖的分组在放的页的最后一项 if (binderDropNode.Items.Count > 0) { ToolStripItemAbstract lastItem = (ToolStripItemAbstract)binderDropNode.Items[binderDropNode.Items.Count - 1]; _toolStripArchive.MoveAfter(dragItem.Id, lastItem.Id); } _toolStripArchive.Update(dragItem); } //放在放置项的后面,同时修改拖动项所属分组为放置项所属的分组,如果他们不在一个分组 if (binderDropNode.Codon.DataBoundType == typeof(ToolStripItemAbstract)) { ToolStripItemAbstract dropItem = (ToolStripItemAbstract)binderDropNode.DataBoundItem; _toolStripArchive.MoveAfter(dragItem.Id, dropItem.Id); if (dragItem.GroupId != dropItem.GroupId) { dragItem.GroupId = dropItem.GroupId; _toolStripArchive.Update(dragItem); } } } #endregion }; #endregion #endregion }