I assume that you are using the IDE. Have you looked in the Toolbox? The MainMenu (.NET 1.x) or MenuStrip (.NET 2.0) are right there. You can add items to them in the designer. If you want to manipulate their properties at run time then you can do so directly through the member variables created for them. Why do you need a loop?
I have a static menu constructed at design time. What I want to do is depending on if a user has access to a particular menu item or not, I want to hide that menu item. I have the menu name and access mapping in a database. So Basically I want to loop through each menu item, see if the user has access to it or not and then hide it.
There is nothing wrong with using an array as suggested but your MenuItems form a tree structure so I think you should use recursion to traverse them just as you should with any tree structure.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Private Sub SetMenuItemStates(ByVal items As MenuItem.MenuItemCollection)
For Each item As MenuItem In items
'Set the state of the current item.
item.Enabled = True
'Call the metho drecursively to set the state of the subitems.
This method just enables each item but you can obviously adjust the code to do what you want.
Having said all this, each MenuItem has a corresponding member variable so you don't really need to traverse the menu. Can't you just write explicit code in the Load event handler, something like this: