void BindDragDropEvent() { flyContent.DragEnter += (s, a) => { if (!IsDropableObject(a)) { return; } a.Effect = DragDropEffects.All; }; flyContent.DragDrop += (s, a) => { Views.UserControls.BeanUI beanUI = null; // https://www.codeproject.com/Articles/48411/Using-the-FlowLayoutPanel-and-Reordering-with-Drag if (a.Data.GetDataPresent("V2RayGCon.Views.UserControls.ServerUI")) { var item = (VgcApis.Interfaces.IDropableControl)a.Data.GetData("V2RayGCon.Views.UserControls.ServerUI"); var bean = new Models.Data.Bean { title = item.GetTitle(), uid = item.GetUid(), status = item.GetStatus(), }; foreach (Views.UserControls.BeanUI control in flyContent.Controls) { if (control.GetBean().uid == bean.uid) { // update title control.SetTitle(bean.title); return; } } beanUI = new Views.UserControls.BeanUI(bean); flyContent.Controls.Add(beanUI); } if (beanUI == null && a.Data.GetDataPresent(typeof(Views.UserControls.BeanUI))) { beanUI = (Views.UserControls.BeanUI) a.Data.GetData(typeof(Views.UserControls.BeanUI)); } if (beanUI == null) { return; } var destIndex = flyContent.Controls.GetChildIndex( flyContent.GetChildAtPoint( flyContent.PointToClient( new Point(a.X, a.Y))), false); flyContent.Controls.SetChildIndex(beanUI, destIndex); ResetFlyContentItemsIndex(); }; }
public BeanUI(Models.Data.Bean bean) { this.bean = bean ?? throw new NoNullAllowedException("Bean must not null."); InitializeComponent(); }