Esempio n. 1
0
        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();
            };
        }
Esempio n. 2
0
 public BeanUI(Models.Data.Bean bean)
 {
     this.bean = bean ?? throw new NoNullAllowedException("Bean must not null.");
     InitializeComponent();
 }