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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перехват изменения значения combobox в datagridvie, Не понимаю, почему происходит много раз 
:(
    Опции темы
igluk
Дата 16.10.2010, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Такое дело: есть DataGridView, в нём есть столбец DataGridViewComboBoxColumn.
Мне нужно, чтобы при изменении ячейки в этом столбце отрабатываолся некоторый сценарий, который смотрит, что было выбрано и принимает некоторые решения. Как я это реализую:

1: при загрузке формы


Код

        dataGridView1.EditingControlShowing += _dgv_EditingControlShowing;



2: реализую _dgv_EditingControlShowing

Код

        private void _dgv_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            DataGridViewComboBoxEditingControl combo =(DataGridViewComboBoxEditingControl)e.Control;
            combo.SelectedValueChanged += ComboBox_SelectedValueChanged;
        }


3: ComboBox_SelectedValueChanged

Код

        void ComboBox_SelectedValueChanged(object sender, EventArgs e)
        {
                MessageBox.Show("Что-то делаем");
        }



Врезультате, при изменении значения, моя функция ComboBox_SelectedValueChanged отрабатывается несколько раз. При чём первый раз - 2 раза, потом 3 и так далее...

Понимаю, что дело в том что я назначаю нового обработчика эвента каждый раз, но как по-другому сделать? или как избавиться о этой ошибки?
Код




Это сообщение отредактировал(а) igluk - 16.10.2010, 21:32
PM MAIL   Вверх
Мурлыкатам_
Дата 21.10.2010, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Можно сделать по другому, обрабатывать он клик, при клике ты получаешь координаты ячейки, берешь контрол из ячейки и проверяешь его значение или делаешь че хош с ним.

Хотя может я и не прав smile Няма студии под рукой глянуть..


--------------------
Хочешь что-то сделать - сделай это сам или попроси помощи на винграде smile
user posted image
PM MAIL ICQ   Вверх
sharp2005
Дата 12.11.2010, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня вот так заработало:
Код

private void _dgv_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
       DataGridViewComboBoxEditingControl combo =(DataGridViewComboBoxEditingControl)e.Control;
       combo.SelectionChangeCommitted -= combo_SelectionChangeCommitted;
       combo.SelectionChangeCommitted += combo_SelectionChangeCommitted;
}


Это сообщение отредактировал(а) sharp2005 - 12.11.2010, 12:36
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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