Don't use picture boxes!
Create a tile class and store a collection (Grid) of tile classes. Each one knows how to draw itself given a graphics object (which you will pass from the Paint event of your panel - the panel will be used to draw all graphics)
Collision detection should then be done by looping the map tiles (preferable only checking tiles near to the player) and other game objects (such as the ghosts, power-ups, dots, bonus items etc.)
Don't perform collision logic on Ticks like you have. You should aim to have a game loop similar to something like follows
Read Input (Get key presses)
Process Logic (detect collection, object movement etc.)
Update Animation (if any)
Render Graphics (Draw all objects on panel)
Play Sounds (if any)
Sync Frame Rate (delay loop if needed)
Repeat
If you have to do winforms application then you can use a timer to simulate the game loop
So you would have a tile class and you can you a 2D array to store them in a grid
TileClass[,] tiles = new TileClass[15,15];
Then you can translate you pac man position to a tile and check the surrounding ones for collision
So say your tiles are 25px x 25px you can do something like
int x = (int)(pacMan.Position.X / 25);
int y = (int)(pacMan.Position.Y / 25);
...anyway, something like that. I don't have the time at the minute to check for any flaws in that logic
//tiles[x, y];