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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> User control datasource, сделать как стандартный 
:(
    Опции темы
webgraf
Дата 17.12.2008, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 5.6.2007

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



VS2008.
Контрол состоит из textbox и listbox. В listbox нужно биндить данные.
Можно ли сделать контрол так, чтобы биндить как обычный listbox в design-mode, с выборкой из доступных datasource?
В msdn на эту тему есть статья(msdn), но это не совсем то. 
Хотелось бы сделать как у стандартных элементов. 
У кого нибудь получалось?
PM MAIL   Вверх
Partizan
Дата 17.12.2008, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



webgraf, а в чём проблема? делаете свойства-обёртки для свойств listbox-а, проставляете им нужные атрибуты и вуаля....


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
webgraf
Дата 17.12.2008, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 5.6.2007

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



проблема в удобстве. 
обернуть DataSource listbox-а можно свойством типа Object. при этом в design-mode вообще не получится его редактировать.
максимум что удается сделать, это как в примере, указать LookupBindingProperties для моего контрола. И уже из окна Datasource "биндить" источник данных на мой контрол.
А хотелось бы как со стандарными элементами. Кинуть на форму и в меню Tasks выбрать нужный источик данных.

или есть какой то атрибут свойства, который говорит дизайнеру что надо искать источик данных?


Это сообщение отредактировал(а) webgraf - 17.12.2008, 16:50
PM MAIL   Вверх
Partizan
Дата 17.12.2008, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



webgraf, надо просто EditorAttribute выставить, вот и всё


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
webgraf
Дата 17.12.2008, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 5.6.2007

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



Что то на эту тему мало информации. :(
Я так понял надо прописать что-то типа этого перед нужным свойством:

[EditorAttribute("System.Windows.Forms.Design.DataMemberListEditor, System.Design", typeof(System.Drawing.Design.UITypeEditor))]

Как найти нужный мне класс System.Windows.Forms.Design ?    Данный пример не показывает источники данных проекта. :( может что то не так настроено?
PM MAIL   Вверх
Partizan
Дата 17.12.2008, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



Вот пример:

Код

///
/// Get/Set the datasource
///
[TypeConverter("System.Windows.Forms.Design.DataSourceConverter")]
public object DataSource
{
    get { return _dataSource ; }
    set
    {
        // Ensure that the screen is only updated when the datasource changes
        if ( _dataSource != null && _dataSource.Equals ( value ) )
            return ;

        _dataSource = value ;

        // Reset the datamember
        _dataMember = String.Empty ;
    }
}


Это сообщение отредактировал(а) Partizan - 17.12.2008, 18:22


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
webgraf
Дата 17.12.2008, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 5.6.2007

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



а это для какой студии? у меня не заработало. Зато заработало так:

Код

        [AttributeProvider(typeof(IListSource))]
        public object DataSource
        {
            get
            {
                return listBox1.DataSource;
            }
            set
            {
                listBox1.DataSource = value;
            }
        }

Теперь все именно так как хотел smile В общем случае можно использовать Reflector
Там ищем нужный нам класс(например Datagrid), и смотрим как в нем описано нужное нам свойство.

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

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


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

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


 




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


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

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