Avatar billede koppelgaard Praktikant
03. januar 2008 - 21:37 Der er 4 kommentarer og
1 løsning

Event picturebox

Jeg har konstrueret et klasse som blandt andet indeholder en picturebox
Jeg tilføjer også en event til pictureboxen:
p.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseDown);

Jeg tilføjer flere objekter af klassen til en form.

Fra den tilklyttede event-handler:
        private void pictureBox_MouseDown(object sender, EventArgs e)
        {           
            MessageBox.Show(((PictureBox)sender).Name, "mouse");
           
        }     
får jeg det korrekte navn på pictureboxen (der er flere) men ikke koordinaterne x og y.

Er er nogen der kan hjælpe mig med det lille problem.

Michael

(Se nedenfor)

public PictureBox_suber(int id,FileInfo fi , Form f, int x, int y, int width, int height):base(fi)
        {
            this.id = id;
            this.fi = fi;
            this.f = f;
            this.p = new PictureBox();
            p.Name = id.ToString();
            p.Location = new System.Drawing.Point(x, y);
            p.Size= new System.Drawing.Size(width, height);           
            p.Image = this.Image;
            p.SizeMode = PictureBoxSizeMode.Zoom;
                       
            p.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseDown);
           

        }
        public PictureBox Picturebox
        {
            get{return p;}
        }
       
        public void showPictureBox()
        {
            f.Controls.Add(p);
        }
       
        private void pictureBox_MouseDown(object sender, EventArgs e)
        {           
            MessageBox.Show(((PictureBox)sender).Name, "mouse");
           
        }
Avatar billede koppelgaard Praktikant
03. januar 2008 - 22:02 #1
Uddybning:
Fra den tilklyttede event-handler:
        private void pictureBox_MouseDown(object sender, EventArgs e)
        {         
            MessageBox.Show(((PictureBox)sender).Name, "mouse");
         
        }   
får jeg det korrekte navn på pictureboxen (der er flere) men ikke koordinaterne x og y.

dvs jeg ikke skrive koden e.X og e.Y.
Det bliver ikke accepteret af compileren
Avatar billede nielle Nybegynder
03. januar 2008 - 22:23 #2
Prøv at rette din:

private void pictureBox_MouseDown(object sender, EventArgs e)
{           
    MessageBox.Show(((PictureBox)sender).Name, "mouse");
}

til:

private void pictureBox_MouseDown(object sender, MouseEventArgs e)
{
    MessageBox.Show(((PictureBox)sender).Name, "mouse");
}

Så burde X og Y være tilgængelig via e.
Avatar billede koppelgaard Praktikant
04. januar 2008 - 08:41 #3
Åh ja der ligger fejlen.

Ovenstående kode er i øvrigt til en ny udgave af picturebrowser (http://www.eksperten.dk/spm/806273), hvor jeg har lavet en nedarvning af den pictureklasse, som du kender og i denne klasse har en picturebox.
Herved får jeg knyttet billede og picture sammen i ét objekt.
Herved behøver jeg kun at flytte pictureboxen, når jeg browser gennem billederne.

Sender du et svar.
:-)
Michael
Avatar billede nielle Nybegynder
04. januar 2008 - 08:50 #4
Ja, jeg syntes jo nok at det smagte af noget du havede været igang med før. ;^)

Jeg ville nu nok selv skrive det på formen:

private void pictureBox_MouseDown(object sender, MouseEventArgs e)
{
    PictureBox pb = sender as PictureBox;
    MessageBox.Show(pb.Name, "mouse");
}

Der er ingen speciel grund til at det skal ned på een linje, og det kan gøre underværker for læsbarheden at bøje det lidt i neon. :^)

... og et svar :^)
Avatar billede koppelgaard Praktikant
04. januar 2008 - 11:58 #5
Det har du ret i.

Michael
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
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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