Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
DenisWD94
4 / 4 / 0
Регистрация: 13.06.2012
Сообщений: 31
1

Ошибка при удалении RadioButton с формы ("Коллекция была изменена")

20.08.2012, 22:10. Просмотров 598. Ответов 6
Метки нет (Все метки)

Вылетает при удалении RadioButton с формы.
Допустим у меня на форме было 15 RadioButton, я решил оставить только 13, должно удалиться два. При удалении вылетает ошибка. Почему? я вообще не могу понять -_- .
0
Миниатюры
Ошибка при удалении RadioButton с формы ("Коллекция была изменена")  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2012, 22:10
Ответы с готовыми решениями:

Ошибка "Приведение строки "explorer.exe" к типу "Double" является недопустимым" при записи в реестр
Помогите, хочу получить доступ к winlogon, что бы изменять любое другое...

Ошибка при запуске .exe файла из debug: "Приведение строки "Июнь" к типу "Double" является недопустимым"
Если запускать из самого проекта(F5), то все нормально, а если скомпилированный...

Стала возникать "Ошибка при создании формы" после публикации
Накануне вечером запускал нормально. После полез в свойства проекта,...

Как при загрузке формы задать цвет шрифта ячеек DGV для "да" - зеленый, для "нет" - красный
Всем привет, подскажите как реализовать следующую задачу: DGV заполняется из...

Ошибка: Нет редактора для "Form4.vb", хотя другие формы успешно открываются
Среда Visual Basic STUDIO’2010 Professional ------------------------ -- ...

6
DenisWD94
4 / 4 / 0
Регистрация: 13.06.2012
Сообщений: 31
20.08.2012, 22:14  [ТС] 2
+ Причем вылетает именно тогда, когда я ввожу число с клавиатуры и нажимаю Enter.
Если "прокручивать" сам NumericUpDown, то все нормально работает, как при увеличении числа (добавлении), так и при уменьшении (удалении)
0
PAnT0P
1024 / 548 / 106
Регистрация: 26.03.2012
Сообщений: 987
21.08.2012, 07:41 3
Удаляй начиная с последних. Я так понимаю когда удаляешь через NumericUpDown, у тебя идет уменьшение на 1 и происходит удаление самого последнего. Когда вводишь в ручную то например если ты удаляешь сразу 2 шт, то удаляется сначала предпоследний (индекс 6) а потом происходит попытка удаления последнего (индекс 7) элемента. Только после того как ты удалил предпоследний элемент, индекс последнего уменьшается на 1, в результате программа не может его найти и вываливается ошибка.
1
nio
5955 / 3361 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
21.08.2012, 10:04 4
может я че путаю всвязи с незнанием VB, но в C# нельзя изменять коллекцию(удалять элементы в том числе), если для циклических операций используется foreach. В случае необходимости изменять набор данных следует использовать циклы for и while.
1
DenisWD94
4 / 4 / 0
Регистрация: 13.06.2012
Сообщений: 31
21.08.2012, 13:49  [ТС] 5
Цитата Сообщение от PAnT0P Посмотреть сообщение
Удаляй начиная с последних. Я так понимаю когда удаляешь через NumericUpDown, у тебя идет уменьшение на 1 и происходит удаление самого последнего. Когда вводишь в ручную то например если ты удаляешь сразу 2 шт, то удаляется сначала предпоследний (индекс 6) а потом происходит попытка удаления последнего (индекс 7) элемента. Только после того как ты удалил предпоследний элемент, индекс последнего уменьшается на 1, в результате программа не может его найти и вываливается ошибка.
Хмм. Я вроде бы удаляю начиная с последнего, но все равно вылетает ошибка. Может дело в самом цикле. Ну в принципе я решил эту проблему поставив в свойствах NumericUpDown - ReadOnly = True. Тобиш изменять можно только при помощи прокрутки в NumericUpDown

Добавлено через 1 минуту
Цитата Сообщение от nio Посмотреть сообщение
может я че путаю всвязи с незнанием VB, но в C# нельзя изменять коллекцию(удалять элементы в том числе), если для циклических операций используется foreach. В случае необходимости изменять набор данных следует использовать циклы for и while.
Как там применить цикл for и while я не совсем понимаю. Если можно на примере напишите
0
nio
5955 / 3361 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
21.08.2012, 15:30 6
VB.Net не знаю, но на шарпе это выглядит приблизительно так
C#
1
2
3
4
5
for (int i=0; i< this.Controls.Count; i++)
{
     if(this.Controls[i] is RadioButton)
     {/*нужные действия по изменению*/}
}
пример набирался без студии и на работоспособность не претендует

Добавлено через 47 секунд
ЗЫ: при удалении нужно идти в обратном порядке или учитывать изменение индекса
0
XIST
1060 / 785 / 112
Регистрация: 01.10.2009
Сообщений: 2,435
Записей в блоге: 1
21.08.2012, 21:39 7
vb.net
1
2
3
4
5
For Each c As Control In Me.Controls
            If TypeOf (c) Is RadioButton Then
'твои действия
            End If
        Next
0
21.08.2012, 21:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2012, 21:39

"Приведение типа "|DBNull" к типу "String" при попытке загрузить данные из ячейки DataGridView в ComboBox
Доброго времени суток! Сама ошибка &quot;Приведение типа &quot;|DBNull&quot; к типу &quot;String&quot;...

Обработка "null" в MS Access "Приведение типа "|DBNull" к типу "String" является недопустимым"
Здравствуйте. Работаю с базой MS Access Вывожу в DataGridView таблицу...

После запуска среды выскакивает окошечко с ошибкой "Unknown error" или "Неизвестная ошибка"
Доброго времени суток. Возникла проблема. После запуска среды выскакивает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru