Visual Basic: Operacje na kontrolkach PictureBox

Stworzyłem mapę z kontrolek PictureBox o wymiarach 12x15.

Każda kontrolka ma nazwę “w#k%”. (#-liczka określająca wiersz, %-liczba określająca kolumnę)

Nie wiem jak wykonać funkcję która po podaniu numerów wiersza i kolumny umożliwiała by zmianę właściwości odpowiadającej

mu kontrolki PictureBox. Chodzi mi o coś takiego:

funkcja(1, 1).Image = …

Czy jest możliwe coś takiego?

Nie programuje w basicu, ale dziwnie próbujesz to zrobić. Nie lepiej byłoby zrobić tablice o dwóch wymiarach przechowujących referencje/wskaźniki na obiekty i wtedy napisać funkcję przyjmującą dwa inty (współrzędne) a zwracającą odniesienie do obiektu? W jakimś javopodobnym pseudokodzie byłoby to mniej-więcej tak:

Object[][] ref = new Object[3][3];


... {

ref[0][0] = ...

ref[0][1] = ...

...

}


public Object getRefByCoord(int x, int y) {

    return ref[x][y];

}

Ogólnie rzecz biorąc, nie uzależniałbym funkcjonalności kodu od nazwy (jeśli to możliwe), bo nazwa to String, a w nim łatwo o jakąś literówkę i debugowanie programu może potem trwać godzinami.

I po co w ogóle więcej niż jeden PictureBox? Na 99% coś takiego nie jest w ogóle potrzebne, bo nawet jeśli to ma być jakaś “szachownica”, to i tak lepiej operować na jednym obrazie, a potem go przypisać do jednego PictureBoxa.

Zrobiłem tak jak podpowiedział mi użytkownik kostek135, lecz nie wiem jak zrobić że po kliknięciu na jakiś kwadrat uruchamiała mi się moja procedura,

która pobiera kordy kontrolki (indeksu z tablicy).

Nie do końca zrozumiałem pomysł somekind-a. Jeżeli to ma być mapa na której każdy kwadrat ma pokazywać co innego to ile trzeba by zrobić kombinacji,

żeby zapisać to w jednej kontrolce PictureBox…

Dla jasności umieszczam stworzony kod:

Public Class Form1

    Dim w As Byte = 0

    Dim k As Byte = 0

    Dim wys As Integer = 12

    Dim szer As Integer = 12

    Dim tablica(12, 12) As PictureBox

    Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click

        For i As Byte = 1 To 144

            tablica(w, k) = New PictureBox()

            tablica(w, k).Image = My.Resources._10

            tablica(w, k).SizeMode = PictureBoxSizeMode.AutoSize

            tablica(w, k).Location = New System.Drawing.Point(szer, wys)

            Controls.Add(tablica(w, k))

            w = w + 1

            wys = wys + 40

            If w = 12 Then

                w = 0

                k = k + 1

                wys = 12

                szer = szer + 40

            End If

        Next

    End Sub

End Class