---
title: "Alternativ till \"Public\" VB.NET"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/116515-alternativ-till-public-vb-net"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Torwald"
published: "2004-11-23T11:30:58.000Z"
updated: "2004-11-23T19:11:26.000Z"
replies: 1
views: 212
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/116515-alternativ-till-public-vb-net"
---

# Alternativ till "Public" VB.NET

## #1 — Torwald, 2004-11-23T11:30Z

Tjohej.
Jag har konfronterat ett problem. Jag skapar i mitt program PictureBoxes (med fiskbilder i, det är ett spel). Jag använder en function till detta. Själva "skapandet" av en picturebox gör man med:
Dim aFish As New System.Windows.Forms.PictureBox

Jag måste ha detta i en function för att kunna skapa ett visst antal fiskar när jag trycker på startknappen eller på formload. Därför kan jag inte använda Public när jag declarar, för då skapas bara en fisk på Formload, sedan skapas inga fler.

Detta är alltså problemet. Anledningen nu då till att jag måste använda något liknande public är att jag måste flytta fiskarna, och det gör jag med en annan funktion, movefishes(). Och i den functionen är inte aFish declarad längre.

Jag kan inte heller slå ihop funktionerna, och skapa 10 fiskar i en loop och sedan flytta dem i en annan, för då är aFish bara declarat i den loopen.

Panik, snälla hjälp mig!

Providar lite kod också:

    Public Function AddNewButton() As System.Windows.Forms.PictureBox
        Dim aFish As New System.Windows.Forms.PictureBox
            Me.List.Add(aFish)
            HostForm.Controls.Add(aFish)
            aFish.Top = 10
            aFish.Left = 208 + Rnd(10) \* 500

            If aFish.Left \< 208 Then
                aFish.Left = 208 + Rnd(10) \* 100
            End If
            If aFish.Left + 60 \> 504 Then
                aFish.Left = 208 + Rnd(10) \* 200
            End If

            aFish.Tag = Me.Count
            aFish.Width = 60
            aFish.Height = 103
            aFish.Enabled = True
            aFish.BorderStyle = BorderStyle.None
            aFish.Image = Image.FromFile(Application.StartupPath & "/fish.gif")
            aFish.BringToFront()
        Return aFish

    End Function

    Public Function movefish()
        Dim i = 1
        For i = 0 To 10
            aFish.Tag(i).Top = aFish.Tag(i).Top + Rnd(10) \* 10 + 15
            'This is where aFish is undeclared.
            i = i + 1
        Next
    End Function

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

## #2 — P, 2004-11-23T19:11Z

"Protected", kanske, eller skapa objekt av dina fiskar.

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/116515-alternativ-till-public-vb-net
