2013-04-10 6 views
1

У меня есть меню Mnu1, которое содержит два подменю. Этот пункт меню является массивной частью массива управления. Я добавил индексную запись для Mnu1, равную нулю. Теперь, когда я создаю больше меню в массиве Mnu1 с помощью оператора Load, они создаются, но они не содержат подменю, которые были в Mnu1(0). Как я могу загрузить дополнительные экземпляры Mnu1() с этими подменю?Загрузка нового элемента управления меню в массиве управления с подменю

Текущая структура меню:

Mnu 

---Mnu1  (with index=0) 

-------Mnu1a 

-------Mnu1b 

---Mnu2 

---Mnu3 

После использования Load (mnu(1))

Mnu 

---Mnu1  (with index=0) 

-------Mnu1a 

-------Mnu1b 

---Mnu1  (with index=1) 

---Mnu2 

---Mnu3 

структуры меню необходимого

Mnu 

---Mnu1  (with index=0) 

-------Mnu1a 

-------Mnu1b 

---Mnu1  (with index=1) 

-------Mnu1a 

-------Mnu1b 

---Mnu2 

---Mnu3 

ответ

1

К сожалению, вы просто не можете сделать это. У вас есть идея, что вы каким-то образом копируете Mnu1 (0), но это не то, что происходит. Вместо этого вы просто добавляете новый элемент управления меню vanilla на тот же уровень иерархии, что и Mnu1 (0), так что у вас есть возможность иметь возможность ссылаться на элемент управления меню с помощью индекса.

Собственный способ VB делать то, что вы хотите, это создать структуру вашего меню, используя все элементы управления, которые вы когда-либо использовали, если это возможно. Затем вы сначала установили свойство Visible вашего текущего нежелательного элемента управления меню False. Когда вы хотите увидеть свой контроль, установите Visible = True.

Единственный способ сделать это - использовать вызовы Windows API (GetMenu(), GetSubMenu(), InsertMenu()) для создания новых основных элементов меню, а затем подкласс окна для получения сообщений WM_COMMAND.

+0

Спасибо за ответ, я решил использовать что-то еще. – user2265784

+0

@ user2265784 Что вы использовали? –

+0

Я создал два меню 'Mnu1a' и' Mnu1b' под 'Mnu'. Затем создайте 'Mnu1' внутри них. – user2265784