У меня есть проект 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