Пользовательский элемент управления и Visual Studio 2008 SP1 - PullRequest
2 голосов
/ 27 февраля 2009

Я создал пользовательский элемент управления (класс, наследуемый от Control). Когда я помещаю его в форму, я могу работать с ним в Visual Studio IDE. Это показывает мне ошибку, и я не вижу форму.

Сообщение об ошибке таково: переменная La 'ctrlImagen' не декларируется или не идентифицируется.

Это winform для приложения Compact Framework.

Как я могу решить это? (если класс наследует от UserControl, он работает отлично)

Ответы [ 5 ]

2 голосов
/ 27 февраля 2009

Звучит безумно, но Visual Studio выборочно выполняет код для вашего контроля в конструкторе. Первое, что нужно проверить, это ваши конструкторы. Убедитесь, что у вас есть пустой конструктор по умолчанию, который общедоступен, даже если вы никогда не планируете его использовать. После этого убедитесь, что любой код, который вы привязали к событиям макета (например, изменение размера), подходит для этого, и, скорее всего, это виновники, поскольку в этом случае я всегда нахожу проблемы, когда мои собственные элементы управления не работают в конструкторе.

1 голос
/ 30 ноября 2011

Кажется, что исключение времени разработки произошло в логике инициализации, которая выполняется перед выполнением вашей логики инициализации формы. Хорошим примером может служить исключение NullPointerException, запускаемое конструктором по умолчанию (или одним или несколькими вызываемыми им методами) пользовательского элемента управления, содержащегося в вашей форме.

1 голос
/ 27 февраля 2009

Есть ли у вашего пользовательского элемента управления открытый конструктор по умолчанию? Я могу получить похожую ошибку "Переменная 'userControlX' либо необъявлена, либо никогда не была назначена ', если конструктор не публичный.

Хотелось бы больше информации.

1 голос
/ 27 февраля 2009

Похоже, у вас есть ошибка в коде для вашего элемента управления. Это звучит как ошибка времени выполнения, которая препятствует рендерингу элемента управления.

Перечитайте ваш код и найдите возможные исключения нулевого указателя, неназначенные переменные, переполнение стека и т. Д. Ошибка лежит где-то в них.

0 голосов
/ 27 февраля 2009

Я положил это на конструктор, чтобы решить проблему: this.ClientSize = новый размер (21, 21);

Прошлое моего класса таково:

public class ControlMapa : Control { public ControlMapa() { this.ClientSize = new Size(21, 21); ...

Спасибо!

...