Is there a possible way to refer an object through it’s name in Vb.Net?
The case is, I have menu items created in my designer with names such as MenuA, MenuB and MenuC.
On the database, I created a table consisting the list of all available menus in string format : MenuA, MenuB all the way to MenuZ.
Also I created a dynamic table consisting the user permission, what menu is accessible by a certain user.
So when I started the app, it will get the name of menu assigned to the logged user, and start to turn the Visible property to TRUE.
If it was a Control, I would just loop through it by Parent.Controls.Find(FoundMenu, True).
My problem is most of it is not a control, it is an Item added to the Control, or even another SubItem added to the Item.
So how can I found an object in my UI only by it’s name?
SearchQuery = "SELECT menu_name FROM tbl_menulist menu, tbl_user user WHERE menu.id_menu = user.id_menu"
QueryReader = ExecuteQueryReader(SearchQuery)
QueryReader.Read()
//What I'm looking for is something like Controls.Find method to look for an object by name
//Seems silly, but what I'm looking for is to create something like below
//QueryReader(0).ToString = Menu Name
Dim FoundMenu As Object = FindMenuByName(QueryReader(0).ToString)
FoundMenu.Visible = True
Anyone can help me with this, I would really appreciate any suggestions.
Thank you 🙂
If this is a WinForm application, you can find the matching menu item by using a recursive method, such as:
Then, you can use it like this (where MenuStrip1 is the name of your top level menu strip):