Невозможно отобразить пользовательские элементы управления в VS 2008 Designer - .NETCF - PullRequest
1 голос
/ 27 мая 2009

У меня проблемы с отображением пользовательских (унаследованных) элементов управления в моем проекте Windows Mobile для .NETCF в Visual Studio. Элемент управления отображается на поверхности конструктора в виде серого прямоугольника с записанным в нем именем класса.

В качестве контрольного примера у меня есть простой элемент управления, определяемый как:

public class ucButton2 : Button
{
}

Должно быть похоже на кнопку, но это дает забавное поведение.

В прошлом я решал эту проблему или подобные проблемы с файлом атрибутов времени разработки. Поэтому я включил файл DTA.xmta со следующим содержимым

<?xml version="1.0" encoding="utf-16"?>
<Classes xmlns="http://schemas.microsoft.com/VisualStudio/2004/03/SmartDevices/XMTA.xsd">
  <Class Name="MyProject.CustomControls.ucButton2">
    <Description>Testbutton</Description>
    <DesktopCompatible>true</DesktopCompatible>
  </Class>
</Classes>

Теперь все становится по-настоящему странным - я начинаю получать ошибки компиляции из genasm.exe в несвязанных файлах типизированных данных.

Следуя советам из последнего комментария к этому сообщению: http://www.simonrhart.com/2008/02/upgrading-your-solutions-to-visual.html

Я изменил DTA.xmta, чтобы иметь действие сборки "Embedded Resource"

Теперь приложение компилируется, но ничего не изменилось - на поверхности конструктора все еще отображается пустое поле с именем класса.

Я закрыл и снова открыл Visual Studio, чтобы убедиться, что странного кэширования не происходит - такое же поведение.

Как я уже говорил, в прошлом файл xmta решал такую ​​проблему. Но не в этот раз. Но в то же время в прошлом добавление файла xmta не вызывало genasm.exe для barf во время компиляции. В моем другом проекте мой xmta-файл имеет действие сборки none, а не встроенного ресурса.

Во время выполнения все работает нормально. Это чисто проблема времени проектирования. Любая помощь будет высоко ценится.

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Я бы сказал, что вы добавляете DesktopCompatible (true) в качестве пользовательского атрибута для элемента управления. Смотри: этот пост

0 голосов
/ 14 ноября 2009

Это связано с тем, что конструктор элементов управления интеллектуальными устройствами не поддерживает визуальное наследование - или я должен сказать, что он не отображает его широко Будь то дефект кода или дизайн, он не работает как дизайнер элементов управления .NET. Иногда это будет отображаться, иногда нет.

Но ваш пользовательский управляющий код все равно будет работать, он просто не всегда будет отображаться так, как ожидалось.

...