---
title: "Funktionsproblem"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/147484-funktionsproblem"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "asp"
published: "2006-05-30T14:36:17.000Z"
updated: "2006-06-06T11:16:33.000Z"
replies: 18
views: 618
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/147484-funktionsproblem"
---

# Funktionsproblem

## #1 — asp, 2006-05-30T14:36Z

Jag vill byta ut 1:an mot i.

```
    Function funk(ByVal i)
        PictureBox[red][b]1[/b][/red].BackgroundImage = Image.FromFile("C:\Documents and Settings\Administrator\Desktop\Projektarbete\green.jpg"))
    End Function
```

Permalänk: https://www.webforum.nu/p/147484

## #2 — P, 2006-05-30T18:19Z

Det är nog inte möjligt. Du får nog göra ngt i stil med: 

```
List<PictureBox> allaboxar = new List<Picturebox>();
;lägg in dinna värden i lista...
Function funk(ByVal i)
        allaboxar[i].BackgroundImage = Image.FromFile("C:\Documents and Settings\Administrator\Desktop\Projektarbete\green.jpg"))
    End Function
```

Permalänk: https://www.webforum.nu/p/1821810

## #3 — asp, 2006-05-30T21:58Z

;lägg in dinna värden i lista...

Den raden fattar jag inte... är nybörjare, vad exakt skall jag göra? :)

Permalänk: https://www.webforum.nu/p/1821930

## #4 — emission, 2006-05-30T22:38Z

Beskriv gärna lite utförligare, med mer kod, vad som ska åstadkommas. Jag tror att vi kan komma på en bättre lösning.

Permalänk: https://www.webforum.nu/p/1821940

## #5 — cok, 2006-05-31T06:41Z

I .NET 2.0 finns det ju en metod: 

```
this.Controls.Find("kontrollnamn", boolean)
```

Om du kör med 2.0 så borde detta gå att skriva om till vb.net.

Permalänk: https://www.webforum.nu/p/1821980

## #6 — asp, 2006-05-31T11:00Z

Jag har 400 bilder i mitt program. De alla heter PictureBox1 t.o.m. PictureBox 400. När man klickar på varje bild så vill jag att denna bild skall bli en ring eller ett kryss beroende på vems tur det är.

Helt enkelt ett luffarschackspel.

Permalänk: https://www.webforum.nu/p/1822047

## #7 — cok, 2006-05-31T11:35Z

skapa då en metod som du kallar på från respektive picturebox vid metoden OnClick. Alltså i OnClick kallar du på din nya metod som tar med sig ett objekt, detta objekt ska då vara din picturebox som du sedan castar från objekt till picturebox och där byter du sedan bild.

Har ingen utvecklingsmiljö framför mig men i stil med:

```
picturebox_onclick(object sender, Eventargs e)
{
nyMetod(sender);
}
void nyMetod(object sender)
{
((PictureBox)sender).BackgroundImage = Image.FromFile("C:\Documents and Settings\Administrator\Desktop\Projektarbete\green.jpg"));
}
```

Antagligen lite felkodat och mer c# än det du vill ha men nått i den stilen kan du göra.

Permalänk: https://www.webforum.nu/p/1822052

## #8 — asp, 2006-05-31T14:11Z

```
    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
        Dim bild = PictureBox1.BackgroundImage
        [b][red]If bild = "C:\Documents and Settings\Administrator\Desktop\Projektarbete\tom.jpg" Then[/red][/b]
            If tur = 1 Then
                PictureBox1.BackgroundImage = Image.FromFile("C:\Documents and Settings\Administrator\Desktop\Projektarbete\green.jpg")
                tur = 0
            Else
                PictureBox1.BackgroundImage = Image.FromFile("C:\Documents and Settings\Administrator\Desktop\Projektarbete\red.jpg")
                tur = 1
            End If
        End If
    End Sub
```

När jag startar programmet är det inget fel. Men när jag klickar på PictureBox1 så markerar den fel på raden som är fetstilad. Det står att något om Bitmap... :(

Permalänk: https://www.webforum.nu/p/1822105

## #9 — asp, 2006-06-05T14:29Z

Hej igen.

Undrar om det är någon som kan komma med ett konkret svar på hur jag löser detta problem.

Jag har 400 pictureboxar, de är i ett rutsystem 20x20 rutor och heter därmed X1Y1... till X20Y1.... sedan X1Y2.... till X20Y2.... o.s.v.

Nu vill jag att när man klickar på en picturebox så körs följande funktion. Det skriver jag med hjälp av:

```
    Private Sub X1Y1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles X1Y1.Click
        funk(1,1)
    End Sub
```

Men nu kommer problemet, funktionen. Hur gör jag för att just ändra bakgrundsbilden på PictureBox:en med namnet X1Y1?

Ungefär så här:

```
    Function funk(ByVal x, ByVal y)
        [b]X[/b] + x + [b]Y[/b] + y +[b].BackgroundImage = Image.FromFile("green.jpg")[/b]
    End Function
```

Permalänk: https://www.webforum.nu/p/1826719

## #10 — cok, 2006-06-05T15:30Z

Varför gör du inte som jag beskrev ovan (att skicka med pictureboxen som ett object).

Du kan använda FindControl() som returnerar en Control som du sedan får kasta till en PictureBox.

Käns lite onödigt att skapa en metod för respektive picturebox's Click. Hänvisa alla Click till samma metod och ta i den ut vilken picturebox det är. på detta sätt blir det lättare att ändra i koden efterhand.

Permalänk: https://www.webforum.nu/p/1826748

## #11 — asp, 2006-06-05T16:10Z

Okej. Det låter jättebra bra, men eftersom jag är nybörjare vet jag inte riktigt hur koden skulle se ut. =/

Permalänk: https://www.webforum.nu/p/1826761

## #12 — mozilla, 2006-06-05T21:44Z

cok har redan givit ett bra exempel på hur koden skall se ut längre upp.

```
picturebox_onclick(object sender, EventArgs e) {
   ((PictureBox)sender).BackgroundImage = Image.FromFile("green.jpg"));
}
```

bör fungerar ypperligt och sedan kopplar du alla knappar till samma OnClick funktion.

Permalänk: https://www.webforum.nu/p/1826842

## #13 — nitro2k01, 2006-06-05T21:49Z

Om du skapar felra picturebox och ger de samma "name" så bör det gå att komma åt dem via:

```
    Function funk(ByVal i)
        ' Alla boxarna har name satt till boxes.
        Boxes(i).BackgroundImage = Image.FromFile("C:\Documents and Settings\Administrator\Desktop\Projektarbete\green.jpg"))
    End Function
```

Denna metod funkade iaf under VB 3.0 för ett antal år sedan, och bör säkert funka även nu.

Permalänk: https://www.webforum.nu/p/1826846

## #14 — emission, 2006-06-05T22:04Z

> **nitro2k01 skrev:**
>
> Om du skapar felra picturebox och ger de samma "name" så bör det gå att komma åt dem via:
>
> ```
>     Function funk(ByVal i)
>         ' Alla boxarna har name satt till boxes.
>         Boxes(i).BackgroundImage = Image.FromFile("C:\Documents and Settings\Administrator\Desktop\Projektarbete\green.jpg"))
>     End Function
> ```
>
> Denna metod funkade iaf under VB 3.0 för ett antal år sedan, och bör säkert funka även nu.

Det gör den inte, men principen är ändå relevant. 

asp, skapa och lägg in alla bilderna i en tvådimensionell array (20,20), så kan du hitta dem enkelt. Det blir dessutom den klart effektivaste koden.

Permalänk: https://www.webforum.nu/p/1826852

## #15 — asp, 2006-06-06T09:19Z

mozilla: "bör fungerar ypperligt och sedan kopplar du alla knappar till samma OnClick funktion."

Hur gör jag det? :(

Vill också tacka alla som svarat o hjälpt mig.

Permalänk: https://www.webforum.nu/p/1826916

## #16 — mozilla, 2006-06-06T10:09Z

okej, nu vet jag inte exakt, för jag har inte visual studio(?) framför mig. Men någonstans måste du ju ange vilken funktion som skall köras när man klickar på knappen. Istället för att länka den till PictureBox1_Click, PictureBox2_Click osv så länkar du alla till PictureBox_Click. Och låter alla PictureBoxar ha ett unikt ID.

Det kan dock vara möjligt att det är som emission säger. Men då får han förevisa exempel :) , och gärna en förklaring till varför det skulle vara mer effektivt :stud

Permalänk: https://www.webforum.nu/p/1826927

## #17 — asp, 2006-06-06T10:33Z

mozilla \>\> Jag förstår din princip. Nu heter PictureBox:arna X1Y1, istället för PictureBox1. Då får man ändra denna kod lite, eller?

```
picturebox_onclick(object sender, EventArgs e) {
   ((PictureBox)sender).BackgroundImage = Image.FromFile("green.jpg"));
}
```

Någon annan som vet vart man skall ändra detta i Visual Studio?

Permalänk: https://www.webforum.nu/p/1826934

## #18 — mozilla, 2006-06-06T10:45Z

Knapparna kan fortfarande heta X1Y1, X2Y2 etc. Och koden behöver inte förändras för det. Du skickar med namnet, ja faktiskt hela objektet som klickat på knappen i "sender". Och vet på så sätt vilken knapp som blivit nertryckt. Du behöver bara koppla "OnClick" till samma funktion för varje knapp.

Permalänk: https://www.webforum.nu/p/1826944

## #19 — asp, 2006-06-06T11:16Z

Ja, men måste jag då gå in i varje knapp och göra detta?

Koden, i VB.NET ser väl den lite annorlunda ut?

Permalänk: https://www.webforum.nu/p/1826954

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/147484-funktionsproblem
