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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> BindingNavigator где посмотреть, код для его кнопок сгенерированный VS 
V
    Опции темы
thomas
Дата 2.2.2008, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



Приветствую всех.
Из DataSources перетащил на форму две таблицы. Студия автоматом добавила на форму BindingNavigator и BindingSource для parent таблицы, а также DataSource для child таблицы.
Если для кнопки Save на BindingNavigator код пишем сами(можно посмотреть и отредактировать), то для кнопок "AddNew" и  "Delete" она(студия) что-то где-то сама прописала. Потому как при запуске приложения если нажать на соответствующую кнопку, то получим либо новый item, либо удалим текущий.

Вопрос: где можно посмотреть код определяющий эти события?
в каком классе, файле зашита обработка этих действий. Ведь они не происходят из воздуха.
 smile 
Больше всего интересует добавление нового item. 
Как оно происходит? Что написано в коде этого события? Где этот код?

ЗЫ у BindingNavigator есть свойство AddNewItem, студия сама присваивает ему значение bindingNavigatorAddNewItem(это имя кнопки(ToolStripButton) в BindingNavigator).
И прокоментировано оно так: The ToolStripItem on the BindingNavigator that raises the 'Add new' action. А где код этой action?



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
informatik
Дата 3.2.2008, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Привет thomas. 

Могу вот что сказать: BindingNavigator связан с соответствующим  BindingSource.
BindingNavigator слушает событие Click своих элементов и вызывает соответствующий метод у BindingSource. Т.е. если произошло событие Click элемента MoveFirstItem, то BindingNavigator вызывает метод MoveFirst у связанного с ним BindingSource. 

Ну в общем примерно так... то что знаю..

Это сообщение отредактировал(а) informatik - 3.2.2008, 18:49
--------------------
namespace informatik
PM MAIL   Вверх
thomas
Дата 3.2.2008, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



informatik, 
Приветствую.
Речь идет о кнопке с плюсиком, т.е. AddNew/. А не о 
Цитата

Т.е. если произошло событие Click элемента MoveFirstItem, то BindingNavigator вызывает метод MoveFirst у связанного с ним BindingSource. 

Вопрос о том, где в коде описано вот это
Цитата

BindingNavigator слушает событие Click своих элементов и вызывает соответствующий метод у BindingSource. 

Потому как в дизайнере формы события клик для этой кнопки не прописано.
Код

// 
            // bindingNavigatorAddNewItem
            // 
            this.bindingNavigatorAddNewItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
            this.bindingNavigatorAddNewItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorAddNewItem.Image")));
            this.bindingNavigatorAddNewItem.Name = "bindingNavigatorAddNewItem";
            this.bindingNavigatorAddNewItem.RightToLeftAutoMirrorImage = true;
            this.bindingNavigatorAddNewItem.Size = new System.Drawing.Size(23, 22);
            this.bindingNavigatorAddNewItem.Text = "Add new";

А вот у кнопки сохранить, событие клик прописано.
Код

// 
            // groepBindingNavigatorSaveItem
            // 
            this.groepBindingNavigatorSaveItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
            this.groepBindingNavigatorSaveItem.Image = ((System.Drawing.Image)(resources.GetObject("groepBindingNavigatorSaveItem.Image")));
            this.groepBindingNavigatorSaveItem.Name = "groepBindingNavigatorSaveItem";
            this.groepBindingNavigatorSaveItem.Size = new System.Drawing.Size(23, 22);
            this.groepBindingNavigatorSaveItem.Text = "Save Data";
            this.groepBindingNavigatorSaveItem.Click += new System.EventHandler(this.groepBindingNavigatorSaveItem_Click);


Так и где клад?  smile 


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
informatik
Дата 3.2.2008, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

Речь идет о кнопке с плюсиком, т.е. AddNew/. А не о Цитата

Т.е. если произошло событие Click элемента MoveFirstItem, то BindingNavigator вызывает метод MoveFirst у связанного с ним BindingSource. 


bindingNavigator имеет ряд свойств: AddNewItem, MoveFirstItem и т.д., каждое из которых имеет тип ToolStripItem, и для каждого свойства создан элемент с данным типом...., 

еще у bindingNavigator есть свойство BindingSource которому присвоен элемент соответствующего типа,

т.е. для AddNewItem - выполняется метод AddNew у соответствующего BindigSource....

Цитата

Вопрос о том, где в коде описано вот этоЦитата

BindingNavigator слушает событие Click своих элементов и вызывает соответствующий метод у BindingSource. 


Событию не присвоен метод-обработчик, но событие то происходит...

И в классе bindingNavigator есть соответствующие инструкции созданные разработчиком, по которым данный класс слушает свои элементы и выполняет соответствующие действия...

А конретнее выполняет методы у связанного с ним BindingSource.





Это сообщение отредактировал(а) informatik - 3.2.2008, 20:03
--------------------
namespace informatik
PM MAIL   Вверх
thomas
Дата 3.2.2008, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



informatik, 
Цитата

для AddNewItem - выполняется метод AddNew у соответствующего BindigSource....

Как выполняется? Где код посмотреть?

Добавлено через 1 минуту и 10 секунд
Цитата

Событию не присвоен метод-обработчик, но событие то происходит...

вот меня и интересует как оно происходит? какие параметры и куда передаются и как обрабатываются?


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
informatik
Дата 3.2.2008, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Событие инкапсулировано в классе BindingNavigator и увидеть его неполучится как и другие инкапслуированные "вещи" созданные разработчиком. И в принципе там написано что-то похожее на вот это:

Если AddNew тогда:

Код

BindingSource.AddNew(); , //где BindingSource - тот самый биндинг присвоенный одноименному свойству у BindingNavigator



Если нужно написать свой обработчик, тогда следует поступить так:
1. В окне свойств у BindingNavigator, свойству AddNewItem присвоить значение (none), тем самым обработчик встроенный в BindingNavigator выполняться небудет.
2. Выбрать элемент bindingNavigatorAddNewItem (стандартное название) у BindingNavigator и присвоить свой обработчик события Click, где следует написать следующее:

Код


//Здесь что хочешь...

BindingSource.AddNew(); //А вот это обязательно должно быть, и будет тоже самое что и выполняет класс BindingNavigator.

//Здесь что хочешь...



Цитата

какие параметры и куда передаются и как обрабатываются?


Параметры передаются теже что и параметры события Click класса ToolStripItem....

Это сообщение отредактировал(а) informatik - 3.2.2008, 20:48
--------------------
namespace informatik
PM MAIL   Вверх
thomas
Дата 5.2.2008, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



В общем проблему решил при помощи Reflector для .NET.
Посмотрел в нем соответствующую библиотеку.



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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