Ejemplo n.º 1
0
        /// <summary>
        /// Fonction qui traite le début d'un évènement DragAndDrop de Vignette.
        /// </summary>
        /// <param name="sender">Emetteur: vignette</param>
        /// <param name="e">Paramètre de l'évènement</param>
        private void MouseDownVignette(object sender, MouseEventArgs e)
        {
            DataObject data     = new DataObject();
            VignetteNV vignette = sender as VignetteNV;

            data.SetData("VignetteNV", vignette);
            vignette.DoDragDrop(data, DragDropEffects.Move);
        }
Ejemplo n.º 2
0
        private void MoveVignette(object sender, DragEventArgs e)
        {
            VignetteNV vignetteSource = e.Data.GetData("VignetteNV") as VignetteNV;

            FlowLayoutPanel flowlayoutpanelTemp = (FlowLayoutPanel)sender as FlowLayoutPanel;

            //Si le flowlayoutpanel correspond bien à celui du UserControl que l'on déplace
            //(On ne doit pouvoir déplacer que les Vignettes d'album dans les Albums et les vignettes de Photos dans les photos).
            if (vignetteSource.Parent == flowlayoutpanelTemp)
            {
                //On obtient le contrôle à la position où l'évènement "drop" a été enregistré.
                Point   p = flowlayoutpanelTemp.PointToClient(new Point(e.X, e.Y));
                Control vignetteDestination = flowlayoutpanelTemp.GetChildAtPoint(p);
                //On obtient l'index (la position) de ce conbtrôle
                int index = flowlayoutpanelTemp.Controls.GetChildIndex(vignetteDestination, false);
                //On déplace la vignette source à cette position
                flowlayoutpanelTemp.Controls.SetChildIndex(vignetteSource, index);
                //On "invalide" le flowlayoutpanelTemp afin de le redessiner.
                flowlayoutpanelTemp.Refresh();
                //flowlayoutpanelTemp.Invalidate();
                //on sauvegarde les modifications
                XML_Serialization.save_user_data();
            }

            //sinon, si le usercontrol est une PictureVignette et quelle est deplacée dans le flowlayoutpannel des albums
            else
            {
                if ((vignetteSource.Parent == AllPhotosGrid) && (flowlayoutpanelTemp == AlbumGrid))
                {
                    VignetteNVAlbum album;
                    VignetteNVPhoto photo;
                    //On obtient le contrôle à la position où l'évènement "drop" a été enregistré.
                    Point   p = flowlayoutpanelTemp.PointToClient(new Point(e.X, e.Y));
                    Control vignetteDestination = flowlayoutpanelTemp.GetChildAtPoint(p);
                    //On obtient l'index (la position) de ce conbtrôle
                    int index = flowlayoutpanelTemp.Controls.GetChildIndex(vignetteDestination, false);
                    //On ajoute la vignettePicture dans lalbum situé à cette position
                    album = (VignetteNVAlbum)flowlayoutpanelTemp.Controls[index];
                    photo = (VignetteNVPhoto)vignetteSource;
                    album.albumLinked.Pictures.Add(photo.pic);
                    album.refreshPreviewPicture();
                    //On "invalide" le flowlayoutpanelTemp afin de le redessiner.
                    flowlayoutpanelTemp.Refresh();
                    //flowlayoutpanelTemp.Invalidate();
                    //on sauvegarde les modifications
                    XML_Serialization.save_user_data();
                }
            }
        }