2009-02-27 4 views
2

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

Сообщение об ошибке: La variable 'ctrlImagen' no está declarada o no se asignó nunca.

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

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

+0

Можете ли вы поместить сообщение об ошибке в свой вопрос? – Migol

+0

Является ли это WPF или WinForms? – Micah

+0

Переменная controlMap никогда не назначается. На испанском языке: La variable 'controlMap' no está declarada o no se asignó nunca. – VansFannel

ответ

0

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

на букву моего класса это:

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

Спасибо

!
1

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

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

2

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

1

Есть ли вероятность, что пользовательский элемент управления не имеет общедоступного конструктора по умолчанию? Я могу получить подобную ошибку «Переменная„userControlX“либо необъявленной или никогда не был назначен», если конструктор не является публичной.

нужно больше информации, хотя.

+0

Если класс наследуется от UserControl, он отлично работает. – VansFannel

1

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

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