Как сделать имя переменной объекта редактируемым в конструкторе? - PullRequest
1 голос
/ 26 октября 2009

Я написал пользовательский элемент управления, который имитирует внешний вид заголовка таблицы. Рисованные столбцы задаются коллекцией объектов со свойством Text string и свойством Width int. Оба имеют добавленные атрибуты Browsable, Category, DefaultValue и Description. В конструкторе коллекция является редактируемой, и пользователь может установить текст и ширину, как для элемента управления, а атрибуты учитываются, как я и надеялся. Однако пользователь не может редактировать имя переменной; сгенерированный код выглядит так:

HeaderMimicColumn headerMimicColumn1 = new HeaderMimicColumn();
HeaderMimicColumn headerMimicColumn2 = new HeaderMimicColumn();
HeaderMimicColumn headerMimicColumn3 = new HeaderMimicColumn();
...

Можно ли сделать так, чтобы пользователь мог указать имена переменных, используемых для столбцов, в конструкторе? Если да, то как?

РЕДАКТИРОВАТЬ: Просто чтобы быть ясно, HeaderMimicColumn не является производным от System.Windows.Forms.Control, это просто простой класс с этими двумя свойствами и пара событий, которые срабатывают при их изменении.

Вероятно, мне следует также объяснить, что для коллекции DesignerSerializationVisibility установлено значение Contents.

Ответы [ 2 ]

2 голосов
/ 27 октября 2009

Если некомпонентные объекты являются частью коллекции, которая сохраняется с помощью механизма DesignerSerializationVisibility.Contents, то каждый объект в этой коллекции не имеет отдельного идентификатора. Это просто часть родительской коллекции. Следовательно, вы не можете установить их имена, так как они буквально не существуют как отдельные объекты.

Если вы хотите, чтобы ваш HeaderMimicColumn был частью вашей коллекции и был адресуем по отдельности (как столбцы в ListView), вам, по крайней мере, придется извлечь их из System.ComponentModel.Component., а затем заняться другими проблемами, которые могут привести к этому. :)

0 голосов
/ 26 октября 2009

Пользователь уже должен иметь возможность сделать это, выполнив следующее

  1. Нажмите F4 в конструкторе (открывает окно свойств)
  2. Выберите headerMimicColumn1 в выпадающем списке
  3. Изменить поле имени
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...