Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2009, 12:21   #1
Arhe
Пользователь
 
Регистрация: 21.02.2008
Сообщений: 28
По умолчанию Помогите с checkedlistbox

Есть у меня checkedlistbox с тремя элементами. И нужно в datagridview добавить количество строк, которое соответствует количеству отмеченных элементов в checkedlistbox. На первый взгляд все просто, я сделал так:

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
int num = checkedListBox1.CheckedItems.Count;
dataGridView1.Rows.Clear();
dataGridView1.Rows.Add(num+1);
}

Но тут выскочила такая проблема: Когда отмечены все три элемента (в датагридвю 3 строки) и я убираю флажок возле елемента, вместо того, чтобы убрать рядок, в датагридвю добавляется 4-я строка, а должно быть 2 строки!!!!! Помогите, пожалуйста, как это исправить
Arhe вне форума Ответить с цитированием
Старый 24.11.2009, 16:52   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Ну вообще-то по коду читается вот что:
кликнули по Item, взяли количество выделенных элементов(допустим 3) и добавили в grid 4 (num +1 = 3+1) строки.
Hollander вне форума Ответить с цитированием
Старый 25.11.2009, 14:54   #3
Arhe
Пользователь
 
Регистрация: 21.02.2008
Сообщений: 28
По умолчанию

Просто когда отмечен один елемент в checkeditems почему-то лежит 0

Оно у меня всегда добавляет строку после снятия флажка возле елемента, а должно быть наоборот.

Последний раз редактировалось Arhe; 25.11.2009 в 14:58.
Arhe вне форума Ответить с цитированием
Старый 25.11.2009, 16:30   #4
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Самому стало очень интересно, вот как надо. Дело в том, что в данном событии еще не перекалькулировалось количество выделенных элементов, поэтому надо сделать проверку.

Код:
void CheckedListBox1ItemCheck(object sender, ItemCheckEventArgs e)
{
	int num = checkedListBox1.CheckedItems.Count;
	if (e.NewValue == CheckState.Checked)
		num++;
	else
		num--;
	dataGridView1.Rows.Clear();
	if (num != 0)
		dataGridView1.Rows.Add(num);
}
Hollander вне форума Ответить с цитированием
Старый 25.11.2009, 16:38   #5
Arhe
Пользователь
 
Регистрация: 21.02.2008
Сообщений: 28
По умолчанию

Большое спасибо, очень помог !!!!
Arhe вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц