invalidargument значение 0 недопустимо для selectedindex

У меня есть проект VB6, который я преобразовал в.NET с помощью Visual Studio 2008. У меня есть код, который использует ShowDialog. Код очень хорошо работал в VB6. В VS 2008 код не выдает ошибки во время сборки или компиляции. Я просто получаю сообщение об ошибке во время выполнения, это ошибка:

Произошла ошибка при создании формы. Подробнее см. Exception.InnerException. Ошибка: Inval . Имя параметра: SelectedIndex

Это код, на который наложена ошибка:

prjDrawSafe.exe! prjDrawSafe.frmMain.cmdAddDrawing_Click (Object eventSender = , System.EventArgs eventArgs = ) Строка 60 Основные

Может кто-нибудь, пожалуйста, скажите мне, как исправить эту ошибку, чтобы код работал в.NET/?

Я получаю вышеуказанную ошибку, когда я пытаюсь этот код. Я пытался дать только мой код, но безрезультатно. (Это было по умолчанию)

Ошибка в событии cmbProduct_SelectedIndexChanged .

Глобальный

Form_Load

cmbProduct_SelectedIndexChanged

Пожалуйста помоги
Заранее спасибо.

При запуске приложения у вас нет элементов в cmbBrand, но cmbProduct запускает SelectedIndexChanged.

удалить инициализацию события SelectedIndexChanged из Form1.Designer.cs. Попробуйте найти следующую строку:

После этого, когда вы заполняете DataSet данными из xml файла, инициализируйте событие SelectedIndexChanged:

Вы также можете попробовать это. Перед установкой combobox DataSource установите BindingContext

У меня была такая же ошибка. Я думаю, что эта ошибка имеет некоторые причины. поэтому моя ошибка связана с «set DataSource в другом потоке не работает»

исправить с помощью

Если у вас есть эта проблема:

  • используйте обработчик события Form_Activation для управления настройкой индексов.
  • Для меня у меня была серия динамически генерируемых ComboBox, которые я добавил в форму.
  • Я составил список тех, где я хотел использовать SetIndex = 0, а затем перебрал их в этом обработчике.
  • Я также имел логическое значение firstFormActivation, когда вызывал SetIndex только один раз.
  • Вы можете случайно использовать этот метод и для Focus(), поэтому первое поле в Форме получает фокус при динамическом добавлении.

Вот некоторый код, чтобы проиллюстрировать это:

Я работаю над приложением Windows Forms в .NET 4.0. Поскольку я привязываю данные к BindingSource (к которому привязан ComboBox ), я получаю следующее исключение. Примечание. Я получаю это только в том случае, если я делаю отладчик остановленным при исключении исключений, необработанных или обработанных. Таким образом, исключение поймано где-то — но тем не менее я не уверен, что это нормально, чтобы его бросили.

АргументOutOfRangeException произошелInval . Имя параметра: SelectedIndex

Я не устанавливаю свойство SelectedIndex . Мой код показан ниже. myData является IList объектов ( List во время выполнения):

Я не могу понять, что я делаю неправильно. Более того, Call Stack меня немного сбивает с толку (см. Ниже). Рамка Windows Forms, похоже, устанавливает SelectedIndex в поле со списком, что вызывает исключение. Кто-нибудь знает способ избавиться от этого?

Когда вы попросите отладчика остановиться на Исключениях, он сделает это, независимо от того, будут ли они выполняться или нет. Это приводит к таким сценариям, как тот, который вы наблюдали:
Отладчик останавливается на исключении и смущает вас, хотя исключение совершенно корректно и, как ожидается, будет вызвано окружающим кодом, поскольку оно обрабатывает исключение, не умирая.

Подводя итог и ответим на ваш вопрос:
Не все исключения, отключаемые отладчиком, являются индикатором того, что вы делаете что-то неправильно или что в вашем коде есть проблема.

Обновление (кредиты идут на отметку):
Вы можете сказать отладчику, что только поймать ваши исключения, если вы включите параметр «Только мой код».

Вы также можете попробовать это. Перед установкой combobox DataSource установите BindingContext

Оцените статью