![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
у Borland есть полезный компонент - ActionList.
На него можно завязать меню и кнопки ToolBar-а. При извенении его свойств (Enable, Visible...) автоматически меняется и у завязанных компонент Есть ли-нибудь подобное в .NET? |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
См. ссылки внизу этой страницы.
-------------------- ![]() |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
||||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 2 Всего: 93 |
Суть этой "болтовни" в том, что в .NET такого компонента нет. Так что на поставленный тобой вопрос ответ можно считать полученным. Это сообщение отредактировал(а) Дрон - 15.12.2006, 16:44 -------------------- Да. Именно так. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Есть датабиндинг, можно привязать почти любое свойство любого контрола к любому свойству любого объекта используя класс DataBinding.
-------------------- ![]() |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
||||
|
||||
| mr.DUDA |
|
||||||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Пример ? Пожалуйста. Предположим, есть объект класса Class1, содержащий некое bool-свойство. И например нам хочется, чтобы в зависимости от его значения были разрешены или запрещены какие-то контролы на форме. Это лишь пример, на самом деле привязать можно любое свойство контрола - Text, Visible, etc. Итак:
1) Создаём проект Windows Application, кидаем на форму кнопку. 2) Добавляем в проект класс Class1 следующего содержания: Class1.cs
3) Теперь самое интересное: оказывается, в студии есть дивный дизайнер привязки контролов к данным 4) Следующий шаг - нужно добавить источник данных "Class1", который можно будет повторно использовать много раз. Это делается в том же окне: раскрываем комбобокс "Binding" (там стоит None), жмём ссылку "Add Project Data Source", выбираем "Object" (там ещё есть Database и Web Service, но они нас не интересуют), и наконец-то -- выбираем наш класс Class1. Жмём Finish. 5) Теперь, когда есть источник данных - можно привязать что-нибудь к нему. Привяжем свойство Enabled нашей кнопки к свойству Class1.MyProperty, для этого в том же окне выбираем свойство Enabled и в комбобоксе Binding выбираем class1BindingSource.MyProperty Сложно ? Да бросьте, всё в дизайнере ведь делаем пока, да и сделать это нужно только 1 раз. Теперь самое последнее: экземпляр Class1, который будет содержать MyProperty, нужно создать в коде и назначить его в class1BindingSource: Form1.cs
Всё, на этом всё готово. Теперь можно менять MyProperty; все привязанные к нему свойства контролов на форме будут меняться автоматически. Кстати, привязанные свойства в окне Properties помечены значком базы данных. Добавлено @ 13:01 З.Ы. всё то же самое можно делать и без дизайнера, и без binding source. Всё умещается в одну строку:
Но ведь с дизайнером форм дело иметь приятнее, не так ли ? -------------------- ![]() |
||||||
|
|||||||
| zss |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
mr.DUDA, огромное спасибо
только я не совсем понимаю смысл event
я встречал запись вида
и вот такое в MSDN [code=csharp]
а теперь я хочу его передать в конструктор. Как правильно
или так
тоесть в чем разница и есть ли она вообще Это сообщение отредактировал(а) zss - 18.12.2006, 16:05 |
||||||||||
|
|||||||||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Не понял, а зачем передавать делегат куда-то ? Если надо подписаться на событие, юзаем оператор +=, если надо сгенерировать событие - вызываем его как обычный метод (только проверив на null). З.Ы. одна тема - один вопрос, пжлста; по событиям ещё может кто выскажется З.Ы. пожалуйста -------------------- ![]() |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
понял для этого делегат нужно делать открытым. Пользователь может забыть подписаться на событие. А через конструктор я хочу его заставить всегда это делать (правда есть тогда ограничения на количество клиентов) |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |