2007-11-28, 17:12
  #1
Medlem
Hur gr man om man vill kolla om en knapp i VB har en viss bild p sig? Tex
If cmdExempel.picture = (bilden) then
blablabla
end if
Jag har provat att skriva in skvgen och lagt in bilden i samma mapp som projektet men det vill sig inte. S r det ngon som vet hur man br g till vga?
Citera
2007-11-28, 17:18
  #2
Medlem
Citat:
Ursprungligen postat av qI0n
Hur gr man om man vill kolla om en knapp i VB har en viss bild p sig? Tex
If cmdExempel.picture = (bilden) then
blablabla
end if
Jag har provat att skriva in skvgen och lagt in bilden i samma mapp som projektet men det vill sig inte. S r det ngon som vet hur man br g till vga?
Frlt, s hr ska det vara:
If cmdExempel.image = image.fromfile("plats") then
/Qunic
Citera
2007-11-28, 17:39
  #3
Medlem
Citat:
Ursprungligen postat av Qunic
Frlt, s hr ska det vara:
If cmdExempel.image = image.fromfile("plats") then
/Qunic

Tack s mycket!
Citera
2007-11-28, 19:50
  #4
Medlem
gadzooxs avatar
Citat:
Ursprungligen postat av Qunic
Frlt, s hr ska det vara:
If cmdExempel.image = image.fromfile("plats") then
/Qunic
Hmm...nej.. tyvrr..

Om cmdExempel.Image r en bild och du skapar ett nytt likadant objekt frn samma fil, s r det nd inte samma objekt... Att kolla tv objekt med = kan drfr ge false, eftersom det inte samma objekt utan enbart tv identiska. Bttre r att anvnda object1.Equals(object2) som, precis som namnet antyder, kollar om objekten r likadana.

Detta fungerar dock inte alls i fallet Image/Bitmap, pga att de tv klasserna inte overridear System.Object.Equals(), och varje objekt har en unik hashcode... Enda (eller bsta?) sttet att jmfra tv bilder r drfr att ladda in pixeldatat frn bgge bilderna i varsin byte-array, och sedan jmfra arrayerna.

I TS fall tror jag dock det blir mycket smidigare att enbart ladda in resurserna en enda gng. Antingen till privata variabler i klassen eller genom att lgga bilderna i en resource-fil. Sedan r det bara att peta in ngot av Image-objekten till knappen ifrga och det kommer drefter g bra att jmfra bilderna - det r ju samma objekt.
Citera
2007-11-28, 20:10
  #5
Medlem
Citat:
Ursprungligen postat av gadzoox
Hmm...nej.. tyvrr..

Om cmdExempel.Image r en bild och du skapar ett nytt likadant objekt frn samma fil, s r det nd inte samma objekt... Att kolla tv objekt med = kan drfr ge false, eftersom det inte samma objekt utan enbart tv identiska. Bttre r att anvnda object1.Equals(object2) som, precis som namnet antyder, kollar om objekten r likadana.

Detta fungerar dock inte alls i fallet Image/Bitmap, pga att de tv klasserna inte overridear System.Object.Equals(), och varje objekt har en unik hashcode... Enda (eller bsta?) sttet att jmfra tv bilder r drfr att ladda in pixeldatat frn bgge bilderna i varsin byte-array, och sedan jmfra arrayerna.

I TS fall tror jag dock det blir mycket smidigare att enbart ladda in resurserna en enda gng. Antingen till privata variabler i klassen eller genom att lgga bilderna i en resource-fil. Sedan r det bara att peta in ngot av Image-objekten till knappen ifrga och det kommer drefter g bra att jmfra bilderna - det r ju samma objekt.
Hmm skulle ha skrivit "is" istllet fr "=" men det funkade inte :s trodde att det fungerade..
Citera
2007-11-28, 20:20
  #6
Medlem
gadzooxs avatar
Citat:
Ursprungligen postat av Qunic
Hmm skulle ha skrivit "is" istllet fr "=" men det funkade inte :s trodde att det fungerade..
Om "is" har samma funktion i VB.Net som i C#, s anvnds det fr att kolla om ett objekt r av en viss datatyp (eller rttare sagt, om ett objekt kan castas till datatypen utan exception)..

Lite fulkod:
Kod:
object foobar = new Int32();

if (
foobar is int)     // true
if (foobar is Int16)   // false
if (foobar is string)  // false 
Citera
2007-11-28, 20:33
  #7
Medlem
Citat:
Ursprungligen postat av gadzoox
Om "is" har samma funktion i VB.Net som i C#, s anvnds det fr att kolla om ett objekt r av en viss datatyp (eller rttare sagt, om ett objekt kan castas till datatypen utan exception)..

Lite fulkod:
Kod:
object foobar = new Int32();

if (
foobar is int)     // true
if (foobar is Int16)   // false
if (foobar is string)  // false 
Nja tror inte det r samma. Exempel:
If sender is button1 then
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in