О проблеме редактирования наследованных контролов VS2005
От: ice_croft  
Дата: 30.11.05 09:31
Оценка:
В настоящее время проблема редактирования (вернее, отсутствия оного) наследованых элементов управления декларируется MS, как баг, надлежащий исправлению в следующих версиях.
В моей огранизации этот момент был замеченен несколько позже, чем следовало бы, и по факту группа разработчиков выяснила, что откатывать сконвертированный проект весьма дорого. Поэтому решили искать пути.

Моя типовая ситуация – необходимость редактировать свойства колонок в гридах (DataGridView). Выходим из положения следующим образом:

1. Добавляем в сборку новый элемент управления, например MyDataGridView
2. Меняем родителя класса на DataGridView
3. Перед стандартным объявлением класса добавляем следующий атрибут:
[Designer("System.Windows.Forms.Design.ControlDesigner, System.Design")]
Также имеются классы для редактирования других типов контролов.
4. Кладем экземпляр MyDataGridView на форму-родителя FormParent, меняем свойство Modifier на Protected
5. Наследуем FormParent, в потомке редактируем MyDataGridView1, наслаждаемся

Сходная проблема ожидает коллег при наследовании toolstrip’ов. Применяется аналогичное решение.

using System;
..
using System.Windows.Forms;

namespace MyClientLogic
{

    [Designer("System.Windows.Forms.Design.ControlDesigner, System.Design")]
    public partial class ctrlSlyGrid : System.Windows.Forms.DataGridView
    {
        public ctrlSlyGrid()
        {
            InitializeComponent();
        }
    }
}


ps сорри за возможный баян.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.