Динамическое меню в VB.NET

Я хочу написать код, который создает меню на основе роли пользователя.

Dim User_Role As String = "Admin"
Dim Menus As New Dictionary(Of String, Object) From {
    {"Admin", { {"item1", "item1_icon" }, {"item2", "item2_icon"}, {"item3", "item3_icon"} } },
    {"User", { {"item1", "item1_icon" }, {"item2", "item2_icon"} } }
}
For Each menu As Object In Menus.Item(User_Role)
    'Inside this loop i need to get for example "item*" and "item*_icon" each time until all items in that user role are looped through and idk how to do it
Next

Где я ошибаюсь?

Вот ожидаемый результат с пользователем "Админ"

И это ожидаемый результат с "Пользователем"

Вместо Object используйте List(Of Class) или массив именованных кортежей ((Item As String, ItemIcon As String)()). Или любой другой тип бетона, который подходит.

Jimi 17.12.2020 22:47

Привет, @Jimi, спасибо за твой комментарий. Мне было интересно, как мне это сделать? Я новичок в VB.NET

V3n0mSyk3 18.12.2020 10:46

По картинке сложно сказать, что это за управление. Например, если это PictureBox, вы должны использовать List(Of PictureBox). Этикетка?...тогда List(Of Label). Или, может быть, это пользовательский класс, поставьте имя после Of. Если вы создаете их с помощью ключевого слова New, это должно быть очевидно. Если вы используете какой-то метод Add, то, вероятно, это тип возвращаемого значения этой функции.

Idle_Mind 18.12.2020 14:46

@Idle_Mind Элементы управления — это кнопки, и мне нужно сохранить каждую кнопку (имя и значок) в виде строк в наборе данных. Вот идея: у меня есть переменная Role = "Admin", а затем, когда я перебираю меню [роль] с каждой итерацией, мне нужно получить результат массива (имя, значок), а затем я буду использовать это как button.text = array (0) и button.image = my.resources(array(1)) для создания динамического меню кнопок на основе ролей. Заранее спасибо.

V3n0mSyk3 19.12.2020 17:53
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
196
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Теперь я понимаю.

Используйте этот синтаксис:

Dim User_Role As String = "Admin"
Dim Menus As New Dictionary(Of String, String(,)) From {
    {"Admin", {{"item1", "item1_icon"}, {"item2", "item2_icon"}, {"item3", "item3_icon"}}},
    {"User", {{"item1", "item1_icon"}, {"item2", "item2_icon"}}}
}

Dim menuSystem As String(,) = Menus.Item(User_Role)
For row As Integer = 0 To menuSystem.GetUpperBound(0)
    Console.WriteLine(row & ": " & menuSystem(row, 0) & ", " & menuSystem(row, 1))
Next

Выход:

0: item1, item1_icon
1: item2, item2_icon
2: item3, item3_icon4

Другие вопросы по теме