С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/103: Рейтинг темы: голосов - 103, средняя оценка - 4.79
18 / 18 / 4
Регистрация: 30.09.2013
Сообщений: 519

При отладке возникает ошибка InvalidArgument - Значение '-1' недопустимо для 'index'

05.10.2014, 16:44. Показов 20542. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
namespace persona
{
    public partial class persona_form : Form
    {
        string family_string, name_string, middle_name_string;
        public persona_form()
        {
            InitializeComponent();
            persona_listbox.Items.AddRange(File.ReadAllLines(@"C:\Users\Admin\Documents\Visual Studio 2010\Projects\persona\persona\listfile.txt", Encoding.Default));
        }
 
        private void persona_form_Load(object sender, EventArgs e)
        {
           
        }
 
        private void family_textbox_TextChanged(object sender, EventArgs e)
        {
            family_string = family_textbox.Text;
        }
 
        private void name_textbox_TextChanged(object sender, EventArgs e)
        {
            name_string = name_textbox.Text;
        }
 
        private void middle_name_textbox_TextChanged(object sender, EventArgs e)
        {
                        middle_name_string = middle_name_textbox.Text;
        }
 
        private void add_button_Click(object sender, EventArgs e)
        {
            string path = @"C:\Users\Admin\Documents\Visual Studio 2010\Projects\persona\persona\listfile.txt";
            using (StreamWriter sw = new StreamWriter(path, true))
            {
                sw.WriteLine("{0} {1} {2}", family_string, name_string, middle_name_string);
            }
            family_textbox.Text = "";
            name_textbox.Text = "";
            middle_name_textbox.Text = "";
        }
 
        private void persona_listbox_SelectedIndexChanged(object sender, EventArgs e)
        {
            string[] fio = persona_listbox.Items[persona_listbox.SelectedIndex].ToString().Split(' '); 
            family_textbox.Text = fio[0];
            name_textbox.Text = fio[1];
            middle_name_textbox.Text = fio[2];
 
 
        }
 
        private void edit_button_Click(object sender, EventArgs e)
        {
          
        }
 
        private void delete_button_Click(object sender, EventArgs e)
        {
            persona_listbox.Items.RemoveAt(persona_listbox.SelectedIndex);
        }
    }
}
Код расшифровывать не буду - он итак простой и понятный.
В общем писал я, писал, вдруг решил протестить и возникла ошибка. Убавил всё до минимума. Понял где ошибка. Ошибка видимо в этой строчке
C#
1
persona_listbox.Items.RemoveAt(persona_listbox.SelectedIndex);
. Не понятно что не так. При запуске прграммы если нажать кнопку удалить (delete_button), то в коде подсвечивается
C#
1
string[] fio = persona_listbox.Items[persona_listbox.SelectedIndex].ToString().Split(' ');
и пишет:
ArgumentOutOfRangeException не обработано
InvalidArgument=Значение '-1' недопустимо для 'index'.
Имя параметра: index
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.10.2014, 16:44
Ответы с готовыми решениями:

Ошибка при работе с listview: "InvalidArgument=Значение '0' недопустимо для 'index'."
Всем, доброго! Помогите разобраться. Раньше все работало, а сейчас выдает такую ошибку "InvalidArgument=Значение '0' недопустимо для...

Ошибка при запуске программы: Значение '-1' недопустимо для 'index'
Доброго времени суток, помогите решить проблему со значением index. При запуске программы вылетает ошибка: "Необработанное...

Ошибка времени выполнения: значение было недопустимо малым или недопустимо большим для знака
program ex4; var fin: text; fout: text; funcWords: array of string; qWords: array of integer; //частота слова ...

14
 Аватар для Монфрид
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
05.10.2014, 16:49
Цитата Сообщение от diargon3454 Посмотреть сообщение
Не понятно что не так.
не так то, что у вас ничего не выбрано в persona_listbox, и его SelectedIndex=-1. А нумерация в массиве Items начинается с 0
0
18 / 18 / 4
Регистрация: 30.09.2013
Сообщений: 519
05.10.2014, 16:55  [ТС]
не так то, что у вас ничего не выбрано в persona_listbox, и его SelectedIndex=-1. А нумерация в массиве Items начинается с 0
Программа загружает итемы лисбокса из текстового файла. Я запускаю программу, выбираю нужный мне итем, жму кнопку удалить и отладка останавливается, и возникает ошибка.
Или я что-то не так понял
0
18 / 18 / 4
Регистрация: 30.09.2013
Сообщений: 519
05.10.2014, 17:20  [ТС]
Ещё есть какая-то странность:
Запустил без отладки
Возникла ошибка (см. во вложении)
Нажал кнопку продолжить
Удалился нужный мне итем.


Полагаю это связано с тем, что итем удаляется с листбокса, но не удаляется из файла и программа из-за этого капризничает. Как удалять итем ещё и из файла?
Миниатюры
При отладке возникает ошибка InvalidArgument - Значение '-1' недопустимо для 'index'  
0
18 / 18 / 4
Регистрация: 30.09.2013
Сообщений: 519
06.10.2014, 09:52  [ТС]
up!
0
 Аватар для meksik
202 / 171 / 67
Регистрация: 04.10.2014
Сообщений: 839
06.10.2014, 15:44
diargon3454, так попробуй
C#
1
2
3
4
5
6
7
8
        private void delete_button_Click(object sender, EventArgs e)
        {
            int i = persona_listbox.SelectedIndex;
            if (i != -1)
                  persona_listbox.Items.RemoveAt(i);
            else 
                  MessageBox.Show("Не выбрано значение");
        }
Добавлено через 8 минут
Цитата Сообщение от diargon3454 Посмотреть сообщение
Как удалять итем ещё и из файла?
не понимаю к чему такой гемор, юзай БД Sql compact edition и будет тебе счастье
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
06.10.2014, 17:08
Ну всё логично.
Читаем про SelectedIndex:
Значение свойства
Тип: System.Int32
Индекс текущего выделенного элемента (индексация ведется с нуля). Если элемент не выбран, возвращается отрицательное значение (-1).

Читаем про RemoveAt:
При удалении элемента из списка индексы последующих позиций в списке изменяются. Все сведения об удаленных элементах удаляются.

Т.е. выбираешь элемент, тем самым меняешь SelectedIndex.
Срабатывает твоё событие.
Удаляёшь элемент.
SelectedIndex сменяется на -1 и снова срабатывает твоё событие, но SelectedIndex уже -1.
0
 Аватар для meksik
202 / 171 / 67
Регистрация: 04.10.2014
Сообщений: 839
06.10.2014, 17:17
Лучший ответ Сообщение было отмечено diargon3454 как решение

Решение

aquaMakc, не в то место я смотрел... )
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void persona_listbox_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (persona_listbox.SelectedIndex != -1) {
                string[] fio = persona_listbox.Items[persona_listbox.SelectedIndex].ToString().Split(' '); 
                family_textbox.Text = fio[0];
                name_textbox.Text = fio[1];
                middle_name_textbox.Text = fio[2];
            }
            else {
                family_textbox.Text = "";
                name_textbox.Text = "";
                middle_name_textbox.Text = "";
            }
        }
1
18 / 18 / 4
Регистрация: 30.09.2013
Сообщений: 519
07.10.2014, 12:15  [ТС]
meksik, спасибо, помогло

Добавлено через 4 минуты
Цитата Сообщение от meksik Посмотреть сообщение
не понимаю к чему такой гемор, юзай БД Sql compact edition и будет тебе счастье
Я можно сказать только начал изучать изучать c#. Ну всмчле только с консольных приложений пересел на формы. И мучаться с БД мне пока рано. Вроде можно всё сделать через Bindings, так?
0
 Аватар для meksik
202 / 171 / 67
Регистрация: 04.10.2014
Сообщений: 839
07.10.2014, 12:21
diargon3454, поверь мучаться с БД гораздо проще чем файлом о_О собссно Sql CE это и есть файл, ты его хоть на флешке таскай и подключай к другой программе и к тому же подключение именно к Sql CE засчет Visual Studio проще чем подключение к любой другой бд

Добавлено через 32 секунды
Цитата Сообщение от diargon3454 Посмотреть сообщение
Вроде можно всё сделать через Bindings, так?
не понял о чем это...
0
18 / 18 / 4
Регистрация: 30.09.2013
Сообщений: 519
07.10.2014, 12:25  [ТС]
Цитата Сообщение от meksik Посмотреть сообщение
не понял о чем это...
http://msdn.microsoft.com/ru-r... 10%29.aspx
Только если связать listbox и тескстовый файл
0
 Аватар для meksik
202 / 171 / 67
Регистрация: 04.10.2014
Сообщений: 839
07.10.2014, 12:27
diargon3454, не лезь ты в такие дебри, это уже wpf и вообще не о том
0
18 / 18 / 4
Регистрация: 30.09.2013
Сообщений: 519
07.10.2014, 12:39  [ТС]
Ну воообще я должен в это влезть. (это требования на учёбе)
Появился ещё один вопрос. У меня если текст написан кирилицей появляются кракозябры. В текстовом файле всё нормально. Как сделать всё нормально. Может можно как-нибудь указать кодировку?
0
 Аватар для meksik
202 / 171 / 67
Регистрация: 04.10.2014
Сообщений: 839
07.10.2014, 12:42
diargon3454,
C#
1
string[] lines = File.ReadAllLines("txt.txt", Encoding.Default);
к примеру
0
18 / 18 / 4
Регистрация: 30.09.2013
Сообщений: 519
07.10.2014, 12:46  [ТС]
Уже есть. (вторая строчка в форме). Поставил на ютф 8 - всё заработало как надо. Спасибо за ответы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.10.2014, 12:46
Помогаю со студенческими работами здесь

при отладке программы возникает ошибка
при отладке программы,возникает одно и то же сообщение при выводе из формулы(на фото в окне отладки) условие: Вычислить для своего...

Значение было недопустимо малым или недопустимо большим для UInt32
Добрый день, есть парсер sqllite таблиц, нашел на просторах интернета и возникает такая беда при чтении таблиц, если в таблице есть данные,...

Значение было недопустимо малым или недопустимо большим для знака
Здравствуйте. Не могу понять почему не работает процедура. Пишет ошибку в 18 строчке(Read(FIn,ch)) : "Значение было недопустимо малым...

Значение было недопустимо малым или недопустимо большим для Decimal
Проблема в заголовке темы. Имеем: Dictionary <double, double> f2 = gcnew Dictionary<double, double>(); Вычисляется функция типа...

Значение было недопустимо малым или недопустимо большим для Int32 по Pascal ABC.NET
Вопрос такой, у меня имеется txt файл, с ранее записанными значениями матрицы (матрица из 0,1,2,3,4). Я пытаюсь считать из файла значения...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru