Avatar billede freelancegrafiker Nybegynder
24. december 2007 - 10:11 Der er 10 kommentarer og
1 løsning

If then else, picturebox og imagelist spørgsmål

Hey, det er faktisk ret simpelt det jeg prøver at lave, men alligevel kan jeg ikke helt forstå hvorfor det ikke lykkedes..

Jeg har en imagelist(med 2 billeder) og en picturebox..

Programmet skal starte med billede nr.1 og hvis man så klikker skal den skifte til billede 2, hvis det altså er billede 1 der er i pictureboxen når man trykker..

_____

Form1_load:

picturebox.image = imagelist.images(2)

_____

picturebox_click:

if picturebox.image = imagelist.images(2) then
picturebox.image = imagelist.images(1)
end if
______

Men problemet er at den ikke vil godtage min "if then else", og den kommer med følgende forklaring..:

"Operator '=' is not defined for types 'System.Drawing.Image' and 'System.Drawing.Image'."

Så der må være en anden måde at skrive det på, men jeg er lidt tør for ideer da jeg ikke ligefrem er professionel programør ;-)

På forhånd tak..
JanP.
Avatar billede nielle Nybegynder
24. december 2007 - 10:57 #1
Du bliver nødt til at have en lille liste (f.eks. af strings) ved siden af din imagelist hvor du holder styr på hvilken immage der pt. er loadet.
Avatar billede freelancegrafiker Nybegynder
24. december 2007 - 11:27 #2
Hvordan det?
Avatar billede bernhof Nybegynder
24. december 2007 - 13:29 #3
Du skal bare skrive "Is" i stedet for "="

If Picturebox.Image Is ImageList.Images(2) Then

... osv.


Is bruges ved reference-type variable, som Image er. Lig-med benyttes ved value-type variable, såsom string, integer, datetime og andre.
Avatar billede bernhof Nybegynder
24. december 2007 - 13:30 #4
og Is skal selvfølgelig kun bruges ved sammenligning - dvs. fx i din If-Then sætning.

Når du sætter PictureBox.Image, skal du bruge =, som du også rigtig nok gør.
Avatar billede freelancegrafiker Nybegynder
24. december 2007 - 14:00 #5
Det lyder godt, det er hvertfal et skridt i den rigtige retning..

Men den skifter stadig ikke, så jeg prøvede:

_____

Form1_load:

picturebox.image = imagelist.images(2)

test = picturebox.image is imagelist.images(2)

textbox.text = test

_____

Når programmet kører skriver den false, altså picturebox.image har ikke image nr.2. Som den altså har ! :-P
Avatar billede arne_v Ekspert
24. december 2007 - 16:43 #6
Måske noget a la:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        curr = (curr + 1) Mod imglst.Images.Count
        PictureBox1.Image = imglst.images(curr)
    End Sub
Avatar billede freelancegrafiker Nybegynder
25. december 2007 - 06:12 #7
For at gøre det en anelse simplere, er mit problem egentlig bare, hvordan læser man hvilket billede der vises i en picturebox.. ?
Avatar billede nielle Nybegynder
25. december 2007 - 09:07 #8
Det kan du vist ikke - jeg vil personligt anbefale arnes løsning.
Avatar billede bernhof Nybegynder
25. december 2007 - 12:43 #9
Ah, det kan jeg se. Indså først nu, at imagelist.Images(2) returnerer et nyt Image-objekt istedet for det eksiterende i imagelist'en, hvilket er grunden til, at du ikke kan sammenligne med "Is".

Så er løsningen den, som arne_v foreslår; du må i en seperat variabel holde styr på, hvilket imageindex du pt. viser i din picturebox.
Avatar billede freelancegrafiker Nybegynder
18. maj 2010 - 03:05 #10
lukker
Avatar billede arne_v Ekspert
18. maj 2010 - 03:46 #11
Og det var ikke nogle af de foreslåede løsninger som kunne bruges??
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
Kurser inden for grundlæggende programmering

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