![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: 14 Всего: 42 |
Есть свой контрол. У него есть конструктор, принимающий параметр. Проблема в том, что дизайнер периодически выкидывает этот параметр.
Что делать? Как инициализировать контрол в InitializeComponent? Пробовал выносить инициализацию в конструктор формы, но тогда ругается дизайнер форм. Спасибо! |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 93 |
ТАК НЕЛЬЗЯ!!! ![]() Серьёзно. Не надо так делать. Обойдись без этого конструктора. Сделай какой-нибудь метод, инициализирующий твой контрол и вот его уже запихни в конструктор или даже в Load формы. Да и зачем вообще это нужно? Можно более поконкретней ситуацию обрисовать? Это сообщение отредактировал(а) Дрон - 14.6.2006, 14:04 -------------------- Да. Именно так. |
|||
|
||||
HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: 14 Всего: 42 |
||||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
На самом деле, нужно сделать 2 конструктора - с параметром и без, и в самом начале твоего конструктора вызывать дефолтный. Тогда и волки будут сыты (дизайнер), и овцы целы (конструктор).
-------------------- ![]() |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 93 |
Хмм... Любопытно. У меня на работе .NET 2.0 не установлен, но дома я обязательно посмотрю как это сделано. Либо там используется какой-то атрибут, либо как-то переопределён дизайнер. А как в общем случае ты определишь, что за параметры должны туда передаваться? -------------------- Да. Именно так. |
|||
|
||||
HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: 14 Всего: 42 |
Вобщем у себя я исправил, сделал конструктор без параметра. Но вопрос остался.
|
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 93 |
Уфф... После нескольких часов исследования MSDN и кода фрэймворка при помощи рефлектора выдал следующую шнягу (написана под 1.1, но должна без проблем работать и в 2.0)
Короче, при помощи пары атрибутов мы получаем возможность использовать конструктор с параметрами и в дизайнере. Проблемы две: 1) конструктор без параметров всё-таки нужен. Он будет вызываться в design-time. А вот в run-time будет вызываться конструктор с параметрами 2) поскольку это никому не нужный пример, то я не особо заморачиваясь сделал предположение, что как параметры в конструктор будут передаваться поля класса имеющие те же имена, что и формальные параметры. Класс ParameterSerializer в аттаче. Там же пример кастом контрола, использующего этот класс. Для компиляции в references надо добавить System.Design. Код предоставляется AS IS и как говорится Don't Try This At Home! ![]() В .NET можно всё, но по-моему лучше обходиться без таких фокусов. PS: Обожаю копаться во внутренностях фрэймворка... Это сообщение отредактировал(а) Дрон - 15.6.2006, 00:58 Присоединённый файл ( Кол-во скачиваний: 17 ) ![]() -------------------- Да. Именно так. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Дрон,
![]() Вот за что я не люблю design-time... -------------------- ![]() |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 93 |
-------------------- Да. Именно так. |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Дрон, ужас
![]() Следуя принципу инкапсуляции, я запихнул все методы обновленя DataSet внутрь его самого. Все работает, все хорошо. Но мне понадобилось изменять место, откуда читаются данные. Решил передать расположение данных в конструкторе. После этого наткнулся на вышеописанные грабли ![]() Вопрос: Что посоветуете, заниматься гемором (см. выше) либо положить на инкапсуляцию и заполнять датасет извне, либо сделать в датасете поле, в которое передавать путь? ![]() ![]() ![]() |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 93 |
Сделать поле с путём или лучше метод вроде LoadData(string path), который будешь вызывать сам. -------------------- Да. Именно так. |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Это в принципе так, но мой DataSet постоянно обновляется в RealTime (в другом потоке). Так что лучше, ИМХО Спасибо |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Сразу после создания объекта запускаются слушатели определенного пути. Этот путь должен браться из поля. Но, получается, слушатели запускаются раньше (при создании объекта), чем я передам правильные пути в параметре ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Добавлено @ 13:29 Может сделать метод Start() у Датаеста??? Это сообщение отредактировал(а) ivashkanet - 15.6.2006, 13:28 |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
ivashkanet, вынеси из датасета всё что напрямую к датасету не относится. Имею ввиду логику по зачитке данных.
-------------------- ![]() |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
mr.DUDA, так и сделал
![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |