2010-11-12 2 views
3

Я создал UserControl с Button, TextBox и DataGridView. Я устанавливаю модификаторы всех элементов управления публично.Редактирование DataGridView через конструктор в унаследованном UserControl

Теперь, если я наследую этот UserControl, я могу изменить TextBox и Button via Designer (перемещаться, изменять свойства) точно так, как я ожидал. Но для DataGridView все свойства отключены.

Есть ли причина, почему я не могу изменить DataGridView через конструктор в унаследованном UserControl?

+0

Действительно, это странно. Если посмотреть на созданный конструктором код за родительским пользовательским контролем, я не вижу ничего, что блокирует сетку. Тем не менее, когда я наследую его и использую визуальный редактор, элемент управления показывает с небольшой блокировкой вверху, что указывает на то, что что-то заблокировало элемент управления. Однако я не вижу причин для его блокировки, хотя что-то нужно делать. Звучит как вопрос для дизайнера элемента управления DataGridView. –

+0

фиксированный это. Посмотрите на мое решение. –

ответ

4

Найдено решение здесь: http://adamhouldsworth.blogspot.com/2010/02/winforms-visual-inheritance-limitations.html

Короче:

  1. Добавить ссылку на System.Design
  2. Наследственное из DataGridView с этим кодом:

    [Designer(typeof(ControlDesigner))] 
    public class InheritableDataGridView : DataGridView 
    { 
        public InheritableDataGridView() 
         : base() 
        { } 
    } 
    
  3. ?? ?
  4. Прибыль !!!
+0

. Замечание: в моем конкретном случае, по крайней мере (я использую VS2008), небольшая блокировка в углу элемента управления все еще отображается, однако свойства в дизайнере редактируются. Сначала это смутило меня, так как я думал, что решение не работает. Благодаря! – Ken

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