Avatar billede webdesigner Praktikant
26. juni 2010 - 13:57 Der er 5 kommentarer og
1 løsning

Hvad hedder instancen af Picturebox

hej har en picturebox der bliver generet 90 gangen med drag and drop funktioner.
hvordan finder jeg den instans der er dragdrop event på så jag kan skifte billed ud der hvor jeg har sluppet billedet.
i sted for PictureBox1.Image..

her er koden:

public Form1()
        {
            InitializeComponent();

            pictureBox1.AllowDrop = true;

            string ImagePath = Application.StartupPath + @"\Images\";

            string[] Images = new string[90];

            int X = 0;
            int Y = 0;
            int ImgSize = 30;
            int imgSpacing = 6;

            for (int i = 1; i < 91; i++)
            {
                PictureBox PB = new PictureBox();
                PB.Width = PB.Height = ImgSize;
                PB.Location = new Point(5 + X, 15 +Y);
                PB.Image = Image.FromFile(ImagePath + i + ".png");
                //PB.MouseDown += new MouseEventHandler(PB_MouseDown);
                PB.DragDrop += new DragEventHandler(BP_DragDrop);
                PB.DragEnter += new DragEventHandler(BP_DragEnter);
                PB.AllowDrop = true;
                groupBoxImgNR.Controls.Add(PB);
                X = X +ImgSize + imgSpacing ;
                if (i%10 == 0)
                {
                    X = 0;
                    Y = Y + ImgSize + imgSpacing;
                }
            }

        }


        private void BP_DragDrop(object sender, DragEventArgs e)
        {
            string[] directoryName = (string[])e.Data.GetData(DataFormats.FileDrop);
            Image img = Image.FromFile(directoryName[0]);

            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                //picstr = e.Data.GetData(DataFormats.FileDrop);
               
                pictureBox1.Image = resizeImage(img, 80);

            }
        }

        private void BP_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect = e.AllowedEffect;
        }

pictureBox1 skal så være den instance af boxen der er blevet dragget til..

koden virker den smider bille på pictureBox1
Avatar billede Syska Mester
26. juni 2010 - 15:16 #1
Alt dette er fra, som jeg mindes at have lavet det tidligere.

Når man starter sit "Drag", som i dit tilfælde er over dit "PictureBox" object går jeg ud fra, kan du lave en "SetData" på dit event object.

Når du så igen laver en Drop kan du hive det frem igen.

Sådan noget du tænker på ?
Avatar billede webdesigner Praktikant
26. juni 2010 - 15:24 #2
filen du hiver fra er en jpg, gif, png unde fra windows stifinder eller en åben mappe skal bare have target picturebox
Avatar billede Syska Mester
26. juni 2010 - 15:26 #3
Dvs du vil skifte PictureBox' ud med det som bliver Dragged fra Windows ?
Avatar billede Syska Mester
26. juni 2010 - 15:33 #4
private void pictureBox_DragDrop(object sender, DragEventArgs e)
        {
            var pb = sender as PictureBox;
            if(pb  != null)
            {
                // her har du elementet du har lavet dit drop på
            }
        }
Avatar billede webdesigner Praktikant
26. juni 2010 - 15:58 #5
Takker mange gange
smid et svar :)
Avatar billede Syska Mester
26. juni 2010 - 16:27 #6
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester