Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Data.Design.DbConnectionEditor как редактор Conn? howto? 
V
    Опции темы
jonie
Дата 4.5.2009, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



Вопрос заключается в следующем: пусть у нас есть компонент, в методе которого есть SqlConnection. Как сделать ему такой же редактор (в design time в propety grid), как у SqlCommand.Connection ?
Код

    public partial class Component1 : Component
    {
        public Component1()
        {
            InitializeComponent();
        }
        private SqlConnection _activeConnection;
        [Editor("Microsoft.VSDesigner.Data.Design.DbConnectionEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
        public SqlConnection Connection
        {
            get
            {
                return this._activeConnection;
            }
            set
            {
                _activeConnection = value;
            }
        }

        public Component1(IContainer container)
        {
            container.Add(this);

            InitializeComponent();
        }
    }

почему-то так у меня пустой combobox, хотя выбрать Connection двойным щелчком можно, но это далеко от такого:
user posted image


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
-Mikle-
Дата 5.5.2009, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



Скачай Reflector и поизучай код стандартных компонентов. В общем, ты на верном пути: нужно указать какой-то атрибут (Editor, AttributeProvider, TypeConverter). Другими словами посмотри атрибуты свойств компонента, у которого реализовано то, что тебе нужно. Эти атрибуты могут быть заданы у самого свойства или у его типа (класса). Отпишись сюда с решением.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
jonie
Дата 5.5.2009, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



-Mikle- я знаю что такое рефлектор и умею его применять.
данный код как раз выдран им.

вот так, например оно объявлено в sqlconnectuion:
Код

[Editor("Microsoft.VSDesigner.Data.Design.DbConnectionEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"), ResDescription("DbCommand_Connection"), DefaultValue((string) null), ResCategory("DataCategory_Data")]
public SqlConnection Connection
...

но: ResCategory и ResDescription являются internal



--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
-Mikle-
Дата 5.5.2009, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



Цитата(jonie @  5.5.2009,  23:08 Найти цитируемый пост)
но: ResCategory и ResDescription являются internal

Ну они не влияют на результат, дело не в них. Действительно странно. Не знаю в чем дело.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Любитель
Дата 5.5.2009, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: нет
Всего: 92



Цитата(jonie @  5.5.2009,  20:08 Найти цитируемый пост)
знаю что такое рефлектор и умею его применять.

Хех.. Ну, собственно этим же рефлектором смотрим код самого эдитора, и находим там в методе заполнения списка коннекшенов большой иф:
Код

if (((selector != null) && (context != null)) && ((provider != null) && (context.Instance is IDbCommand)))


Смотрим в конец этого условия... Иными словами - если ты не реализуешь в своём компоненте IDbCommand, то использовать этот редактор (по крайней мере в чистом виде) ты не сможешь.


--------------------
PM MAIL ICQ Skype   Вверх
Springtime
Дата 6.5.2009, 06:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 25.10.2006
Где: Россия, Тюмень

Репутация: нет
Всего: 2



может поможет или облегчит задачу - 
Код

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();


Это сообщение отредактировал(а) Springtime - 6.5.2009, 06:19
--------------------
ICQ: 1fe410f46e7f48f6c721bc866d8294a2
PM MAIL ICQ   Вверх
jonie
Дата 7.5.2009, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



Springtime ты написал полную чушь.

Любитель слона-то я и не заметил... спасибо.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
-Mikle-
Дата 7.5.2009, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



Цитата(Любитель @  6.5.2009,  01:32 Найти цитируемый пост)
Иными словами - если ты не реализуешь в своём компоненте IDbCommand

Хм... может копи-паст с рефлектора, там-сям подредактировать и получится свой редактор  smile    Не забудь сюда потом код выложить, мы тебя плюсАми наградим  smile 


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Любитель
Дата 7.5.2009, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: нет
Всего: 92



Во-первых, копипастить придётся много.
Во-вторых, это нарушении лицензии ;)


--------------------
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.1124 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.