2016-07-14 1 views
3

поэтому после стольких лет я все еще пишу программу для Wince в C# с .NET CF 3.5, и у меня есть настраиваемый элемент управления с самоопределяемыми событиями на элементах управления WinForm. Кажется, я просто не вижу атрибут [DefaultEvent].Как пометить событие по умолчанию для пользовательского элемента управления в WinCE Compact Framework 3.5

Я предполагаю, что это можно как-то сделать, потому что без этого атрибута, как люди создавали бы пользовательский элемент управления с событием по умолчанию для двойного щелчка в дизайнере в то время? Я использую VS2008. Есть идеи?

Спасибо.

ответ

1

Насколько я знаю, дизайнер (который явно не работает на .NET CF) использует элементы управления из полной структуры под капотом. Существует какое-то сопоставление, которое применяет пользовательские атрибуты для .NET CF, используя DesigntimeAttributes.xmta. Таким образом, им не пришлось переносить всех дизайнеров на CF.

This link показывает, как вы можете сгенерировать DesigntimeAttributes.xmta с помощью функции «Показать класс диаграммы», а this link содержит дополнительную информацию об изменении файла.

Короче говоря, вы добавляете DesigntimeAttributes.xmta файл в проект что-то вроде:

<Classes xmlns="http://schemas.microsoft.com/VisualStudio/2004/03/SmartDevices/XMTA.xsd"> 
    <Class Name="MyProject.MyCustomControl"> 
    <DefaultEvent>MyDefaultEvent</DefaultEvent> 
    </Class> 
</Classes> 

Что касается ошибки genasm.exe вы имеете, this link содержит информацию и шаги, чтобы воспроизвести его. Я создал метод, который возвращает SqlCeCommand (я предполагаю, что это то, что возвращает ваше свойство CommandCollection) и получить ту же ошибку. Когда я меняю этот метод на возврат DbCommand, ошибка исчезает.

Если вы можете уйти с заменой каждого SqlCeCommand на DbCommand (и всех других типов из семейства), вы можете захотеть туда добраться, но обходные пути кажутся довольно тяжелыми для добавления события по умолчанию.

+0

Hi Evenhuis, создав файл XMTA, получил ошибку 'genasm.exe (1): ошибка Ошибка инициализации MobileScan.dbDataSetTableAdapters.dbTableAdapter.get_CommandCollection. Не удалось загрузить файл или сборку «System.Data, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 969db8053d3322ac, Retargetable = Yes» или одна из его зависимостей. Система не может найти указанный файл. «Удаление XMTA-файла устраняет ошибку. Это известная проблема? Постскриптум Если я изменил действие сборки с «Нет» на «Содержимое», тогда никакая ошибка, кроме DefaultEvent, не вступила в силу, когда элемент управления дважды щелкнул –

+0

@LionetChen Я не могу думать о причине, по которой он не смог бы загрузить сборку _because_ из XMTA :( –

+0

Кто-то столкнулся с той же проблемой: https://social.msdn.microsoft.com/Forums/en-US/887362ed-4ab1-4671-a485-e86321f6bb62/genasm-error-message-when- add-designtimeattributesxmta-to-my-project? forum = windowsmobiledev –

Смежные вопросы