Этот ответ относится к VB.NET. Я планирую на превращение этого в C# для DLL, но сейчас это в vb.net, потому что там я начал эту идею с и язык проект находится в
Вот что я до сих пор:.
ToolStripMenuItemExt
Назначение: Пользовательские ToolStripMenuItem
.
ToolStripMenuItemExt
имеет CheckListSheet
, который содержит ссылку на DropDownItems ToolStripMenuItemExt
(я прошел в dropdownitems byref, а не byval). Он имеет одно свойство, которое возвращает объект CheckLists
в CheckListSheet
.
CheckListSheet
Назначение: Поддерживает ссылку на коллекцию я наблюдающий через наблюдаемую тип коллекции и объект коллекции я возвращаюсь в ToolStripMenuItemExt
.
CheckListSheet
имеет объект CheckLists
. Выпадающие элементы, которые я передаю в byref, хранятся в ObservableToolStripItemCollection
, которые, надеюсь, когда я доберусь до тестирования, это позволит мне обновить коллекцию контрольных списков легче, так как она наследует ObservableCollection(of ToolStripItemCollection)
. Этот класс также имеет общую функцию, которая возвращает наблюдаемую коллекцию, которая имеет идентификатор области видимости для общего доступа.
КОНТРОЛЬНЫЕ СПИСКИ
Назначение: CollectionBase
тип, который хранит CheckList
объекты.
CheckList
Цель: Хранит ToolStripItemCollection
, объекты действуют как единый элемент проверяется контрольным (только один пункт проверяются в то время).
Для этого есть некоторые свойства для дизайнера и коллекции для контрольного списка. В конце концов я добавлю логику, чтобы проверить и автоматически снять флажок и поднять событие.
MenuItemCheckListCollectionEditor
Назначение: Позволяет коллекцию известны и экземплярыToolStripItem
объектов, подлежащих отображению, и добавляют к CheckList
.
Прямо сейчас, это требует, чтобы я дал ему тип или массив типов, чтобы он мог установить себя, какой тип CollectionEditor
он есть. Я не могу показать ниспадающие типы или выпадающие объекты ToolStripItem
. Любой класс, имеющий ToolStrip в своем имени, наследует ToolStripItem, поэтому я использую этот тип объекта.
Если НИКОМУ имеет какую-либо рекомендацию на моем текущем ответ или может прогнозировать предсказуемые ошибки, пожалуйста, поделитесь. Мне все равно, если вы говорите в C# или vb.net. Может быть, мне просто нужно остановиться и превратить это в код C#. Возможно, это невозможно. Однако я добиваюсь прогресса. Что было бы чрезвычайно полезным является выяснение того, как редактор коллекции MenuStrip является возможность заполнить выпадающий ToolStripItems
[Update]
Редактор коллекции требует, чтобы обеспечить тип для отображения. Этот тип должен наследовать CollectionBase
, что означает, что во время разработки нет возможности ссылаться на dropdownitems. : sigh:
С чего начать: установите контрольную точку внутри класса 'ToolStripItemExtCollectionEditor' и проверьте значения, которые вы там получаете. –
То, что я нашел до сих пор, - это выбор компонента, инициирующего вызов конструктора редактора коллекций, и при открытии коллекции вызывается CreateNewItemTypes(). Есть ли способ отладить мой дизайнер? Я мог бы увидеть, кто вызывает конструкторы свойств, если я смог это сделать. – Luminous
Возможно, вы можете запустить второй экземпляр VS и подключить к нему отладчик. Я знаю, что это работает с Expression Blend. – Dirk