Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/51: Рейтинг темы: голосов - 51, средняя оценка - 4.86
Mr_Ser_Win
44 / 43 / 7
Регистрация: 15.10.2008
Сообщений: 320
#1

"Элемент с тем же ключом уже был добавлен."

03.12.2008, 15:09. Просмотров 9197. Ответов 8
Метки нет (Все метки)

здравствуйте, люди позволяющие начинающим программистам сдвинуться с места, на котором зациклились.
У меня такая поблемка: вобщем я ввожу выборку чисел и указываю их класс.... При добавлении точек с разными классами, все нормально.. и отрисовываються разными цветами.... а вот при добавлении уже существующего класса, выводит ошибкув этой строке pointClass.Add(points[j, 0], new PointPair(points[j, 1], points[j, 2]));
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
if ((string)dgvTraining.Rows[currentRow + 1].Cells[0].Value != "")
            {
                for (int j = 0; j < currentRow + 1; ++j)
                {
                    for (int q = 0; q <= 2; q++)
                    {
                        points[j, q] = Convert.ToInt32(dgvTraining.Rows[j].Cells[q].Value.ToString());
 
                    }
                    if (!сolorClass.ContainsKey(points[j, 0]) && numberOfColor < colors.Length)
                    {
                        сolorClass.Add(points[j, 0], colors[numberOfColor]);
                        numberOfColor++;
                    }
                    else if (numberOfColor > colors.Length)
                    {
                        throw new ApplicationException("Count of classes exceeded the limit!");
                    }
                    listPointsForAllClasses.Add(points[j, 1],points[j, 2]);
                    pointClass.Add(points[j, 0], new PointPair(points[j, 1], points[j, 2]));
                }/*
                listPointsForAllClasses.Add(points[currentRow, 1], points[currentRow, 2]);
                pointClass.Add(points[currentRow, 0], new PointPair(points[currentRow, 1], points[currentRow, 2]));*/
 
                foreach (int klass1 in сolorClass.Keys)
                {
                    foreach (KeyValuePair<int, PointPair> kvp in pointClass)
                    {
                        if (klass1 == kvp.Key)
                        {
                            listPointsForCurrentClass.Add(kvp.Value.X, kvp.Value.Y);
                        }
                    }
                    listPreparedItems.Add(klass1, listPointsForCurrentClass);
                    listPointsForCurrentClass = new PointPairList();
                }
            
            }
как избавиться от ошибки?..... заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2008, 15:09
Ответы с готовыми решениями:

Десериализация json. Ожидается элемент "root" из пространства имен "". Обнаружен элемент "None"
Здравствуйте. Получаю от сервера ответ на запросы. В интернете нашел пример...

Ошибка "Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "richTextBox1" не из того потока, в котором он был создан."
Код клиента: public partial class Form1 : Form { string IP; ...

Запуск ехе "внутри" программы с ключом
Всем привет! Хочу запустить скайп с ключом secondary, но ничего не...

Элемент диаграммы с именем "Series1" не удается найти в "SeriesCollection"
Почему у меня пишет исключение: Элемент диаграммы с именем &quot;Series1&quot; не...

Чем меньше интервал таймера, тем больше он "врет"
Ситуация в следующем. Пытаюсь разобраться с таймером в C#. Написав некоторый...

8
mik-a-el
Администратор
71472 / 40744 / 241
Регистрация: 10.04.2006
Сообщений: 12,699
03.12.2008, 20:04 #2
Все ключи в коллекции должны быть уникальными. Поэтому перед добавлением элемента полезно проверять, есть ли он там с помощью метода Contains().
0
rattrapper
foo();
862 / 566 / 219
Регистрация: 03.07.2013
Сообщений: 1,543
Записей в блоге: 2
20.09.2013, 23:18 #3
Ребят, пользуюсь "excellibrary", во второй строчке вылазит исключение, как у ТС. В чем может быть трабл???
C#
1
2
Stream strm = new FileStream(FileName, FileMode.Open,FileAccess.Read);
Workbook WB = Workbook.Load(strm);
0
SharpDeveloper
134 / 131 / 22
Регистрация: 16.02.2012
Сообщений: 453
21.09.2013, 01:10 #4
В баге в excellibrary?
0
Psilon
Master of Orion
Эксперт .NET
5989 / 4842 / 901
Регистрация: 10.07.2011
Сообщений: 14,459
Записей в блоге: 5
Завершенные тесты: 4
21.09.2013, 23:10 #5
rattrapper, все потому что нужно пользоваться официальными dll-ками Interop
0
rattrapper
foo();
862 / 566 / 219
Регистрация: 03.07.2013
Сообщений: 1,543
Записей в блоге: 2
22.09.2013, 12:16 #6
Цитата Сообщение от Psilon Посмотреть сообщение
rattrapper, все потому что нужно пользоваться официальными dll-ками Interop
я пробовал, но все дело в том, что мне нужно
  1. Открыть xls файл, и достать из него данные
  2. Дать пользователю возможность изменить эти данные с помощью моей программы (на что в среднем уходит более 8 часов)
  3. Снова открыть файл, из записать новые данные
В большинстве, компьютеры юзеров очень слабые, и на скачивание данных через интероп уходит более минуты (только из-за того, что нужно запускать ms excel). Также, я не могу знать какой именно excel будет у пользователя, т.е. невозможно использовать oledb соединение.
Неофилиальные либы используются для того, чтобы программа как можно меньше зависела от ПО пользователя.
0
Psilon
Master of Orion
Эксперт .NET
5989 / 4842 / 901
Регистрация: 10.07.2011
Сообщений: 14,459
Записей в блоге: 5
Завершенные тесты: 4
22.09.2013, 12:19 #7
rattrapper, не знаю, на 233МГЦ пнях разве что минуту открывается эксель, Хотя и там по-моему быстрее...
0
rattrapper
foo();
862 / 566 / 219
Регистрация: 03.07.2013
Сообщений: 1,543
Записей в блоге: 2
22.09.2013, 12:28 #8
Цитата Сообщение от Psilon Посмотреть сообщение
rattrapper, не знаю, на 233МГЦ пнях разве что минуту открывается эксель, Хотя и там по-моему быстрее...
Я могу ошибаться с временем. Во всяком случае, ожидать приходится. Но разве целесообразно открывать excel, для того, чтобы скачать значения ячеек (только Cells.Value, ничего больше не нужно), и тут же закрыть???
И будет ли программа, использующая interop v15, работать со старыми версиями excel?
0
Psilon
Master of Orion
Эксперт .NET
5989 / 4842 / 901
Регистрация: 10.07.2011
Сообщений: 14,459
Записей в блоге: 5
Завершенные тесты: 4
22.09.2013, 12:46 #9
rattrapper,
1) версию Interop можно выбирать самому, для этого GAC и изобрели
2) эксель можно открывать, не показывая пользователю, а целесообразности в этом не меньше, чем в использовании сторонней dll-ки
0
22.09.2013, 12:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2013, 12:46

Многопоточный доступ к файлу и ошибка "Поток был недоступен для чтения"
Здравствуйте. Решил потренироваться в многопоточности, но почему-то все равно...

При подключении второго клиента к серверу возникает ошибка "IAsyncResult не был получен"
Всем привет, у меня проблема с асинхронными сокетами. Суть: Пишу простенький...

Ошибка после конвертации метода на С++ к С#: "Неявное преобразование типа "int" в "bool" невозможно"
Ошибка после преобразования метода на С++ к С#: &quot;Неявное преобразование типа...


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

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

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