Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
1

Динамическое добавление пункта меню

13.02.2016, 01:33. Показов 2455. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста, решить проблему.

Есть главное меню (см. миниатюру)

Надо программно добавить пункт меню <Хромой тарификатор> в подменю <Справочники>, поместив его в начало подменю.

Пытаюсь вот так:

VB.NET
1
2
3
Dim TMU_MenuItem_L2 As New System.Windows.Forms.ToolStripItem
 
Main.Sprav_MenuItem_L1.DropDownItems.Insert(0, TMU_MenuItem_L2)
Компилятор ругается - "New" не может использоваться для класса, объявленного как "MustInherit"
Миниатюры
Динамическое добавление пункта меню  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.02.2016, 01:33
Ответы с готовыми решениями:

Добавление пункта в контекстное меню кодом. Иконка к пункту
Добрый день. Столкнулся с одной проблемой: Формирую пункты меню (ContextMenuStrip) &quot;на ходу&quot; по...

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

Вывести название пункта меню MenuStrip
Здравствуйте. У меня следующее задание: Как вывести в статусную строку название пункта и...

Выполнение процедуры кнопки при выборе пункта меню
как во вкладке меню при нажатии на менюшку выполнить процедуру кнопки? у меня есть к примеру меню...

9
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
13.02.2016, 02:16  [ТС] 2
Прошу прощения - в миниатюре должен быть ТОЛЬКО пункт <ЛПУ>

Добавлено через 22 минуты
В конец подменю - добавление получается:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        If gcfg_ter <> "MOBL" Then
            Main.SuspendLayout()
            
            Main.Sprav_MenuItem_L1.DropDownItems.Item(1).Dispose()
            MainMenu_TMU_MenuItem_L2_exist = False
            
            Main.ResumeLayout()
        Else
            If Not MainMenu_TMU_MenuItem_L2_exist Then
                Main.Sprav_MenuItem_L1.DropDownItems.Add("Хромой тарификатор")
 
                Cnt = Main.Sprav_MenuItem_L1.DropDownItems.Count()
 
                Main.Sprav_MenuItem_L1.DropDownItems.Item(Cnt-1).Name = "TMU_MenuItem_L2"
 
                AddHandler Main.Sprav_MenuItem_L1.DropDownItems.Item(Cnt-1).Click, AddressOf TMU_Item_Click
 
                MainMenu_TMU_MenuItem_L2_exist = True
 
            End If
        End If
Добавлено через 28 секунд
А вставка - никак...
1
Администратор
Эксперт .NET
17558 / 13780 / 5299
Регистрация: 17.03.2014
Сообщений: 28,258
Записей в блоге: 1
13.02.2016, 03:02 3
Лучший ответ Сообщение было отмечено Ivan215 как решение

Решение

Цитата Сообщение от Ivan215 Посмотреть сообщение
Компилятор ругается - "New" не может использоваться для класса, объявленного как "MustInherit"
Модификатор MustInherit означает что это абстрактный класс и его экземпляр создать нельзя. Тебе в данном случае нужен класс ToolStripMenuItem.

Цитата Сообщение от Ivan215 Посмотреть сообщение
VB.NET
1
2
3
4
Main.SuspendLayout()
Main.Sprav_MenuItem_L1.DropDownItems.Item(1).Dispose()
MainMenu_TMU_MenuItem_L2_exist = False
Main.ResumeLayout()
1) Вызовы SuspendLayout/ResumeLayout в данном случае не нужны т.к. элементы меню не влияют на расположение элементов формы.
2) Вызывать Dispose() для элементов управления не удалив их из визуального дерева означает напрашиваться на неприятности. Эту строку следует убрать.
4
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
13.02.2016, 14:48  [ТС] 4
Вызывать Dispose() для элементов управления не удалив их из визуального дерева означает напрашиваться на неприятности. Эту строку следует убрать.
А как же быть, если для разных режимов работы программы нужен разный состав подменю (Main.Sprav_MenuItem_L1)?

Создавать ВСЕ пункты подменю Main.Sprav_MenuItem_L1 программно?
0
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
13.02.2016, 15:51 5
Цитата Сообщение от Ivan215 Посмотреть сообщение
Создавать ВСЕ пункты подменю Main.Sprav_MenuItem_L1 программно?
А почему бы и нет? Написал себе процедурку с условиями - и вызывай когда нужно.

Также можно вкрячить все требуемые менюшки в дизайнере, а потом - в зависимости от "режима работы" - менять их свойства Visible или Enable.

Добавлено через 6 минут
А вместо Dispose Вы наверное имели ввиду МЕНЮ.Items.Remove

Добавлено через 1 минуту
VB.NET
1
Dispose
немного для другой очистки)
0
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
13.02.2016, 16:17  [ТС] 6
Вот спасибо. Совсем было забыл про Visible. Недавно нарвался на ситуацию, когда это свойство вообще не работает у объекта. А здесь вроде работает.
0
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
13.02.2016, 16:27 7
Цитата Сообщение от Ivan215 Посмотреть сообщение
когда это свойство вообще не работает у объекта. А здесь вроде работает.
Тож было такое дело) Правда потом выяснилось что неспроста оно не работает))) Не помню чо за контрол(
0
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
13.02.2016, 21:00  [ТС] 8
А я помню - контекстное меню. Что у контекстного меню делает свойство Visible - совершенно не ясно.
0
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
14.02.2016, 01:07 9
Цитата Сообщение от Ivan215 Посмотреть сообщение
Что у контекстного меню делает свойство Visible - совершенно не ясно.
Видимо, наследуется от Control. В дизайнере то его нет. Свойство есть - а в нем пусто)
0
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
14.02.2016, 01:51  [ТС] 10
В дизайнере то его нет
А Вы сравните состав свойств в дизайнере и в обозревателе объектов, например для класса DataGridView...
0
14.02.2016, 01:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2016, 01:51
Помогаю со студенческими работами здесь

Как сделать отображение галочкой выбранного пункта меню в MenuStrip?
Как сделать отображение галочкой выбранного пункта меню в MenuStrip?

Обработка правого клика мышки в ListBox и пункта вызванного меню
Как при правом клике мышки вызвать свое меню? Мне нужно в ListBox нажать на конкретной...

Динамическое добавление OvalShape на форму
Всем знатокам доброго времени суток! Как динамически добавлять контролы типа кнопок, лэйбов и...

Динамическое добавление компонентов на форму
Подскажите, имеется окно с combobox и textbox в строку, а рядом кнопка &quot;+&quot; Как сделать чтобы по...

Динамическое добавление свойств объекту
Можно ли добавить динамически какое то свойство объекту на стадии выполнения?

Добавление пункта в системное контекстное меню
Проблема такая: при запуске приложения я хочу что б в меню (когда по папке или файлу щелкаешь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru