VB6 обновить / перезагрузить пользовательский элемент управления CTL, используемый в моем проекте
У меня есть старый проект VB6, который использует пользовательский элемент управления CTL. Я вижу пользовательский элемент управления на панели инструментов.
Если я создаю новую форму внутри проекта и пытаюсь добавить пользовательский элемент управления, происходит сбой, поскольку "Ошибка загрузки DLL" и элемент управления не может быть добавлен.
Но если я создаю новый проект, я могу добавить пользовательский элемент управления в проект, а затем без проблем использовать его в новой форме.
Что плохого в первом проекте, что я не могу использовать пользовательский элемент управления в его формах?
Таким же образом, открывая формы проекта, в котором пользовательский элемент управления уже используется, элемент управления не распознается. Кажется, что-то связано с неправильным путем / ссылкой для пользовательского элемента управления в исходном проекте.
Я попытался добавить пользовательский элемент управления снова, но он говорит мне, что уже существует пользовательский элемент управления с тем же именем.
И если я пытаюсь выйти из пользовательского элемента управления, чтобы загрузить его снова, я не могу выйти из него, потому что он используется в проекте. Что я могу сделать?
Спасибо за вашу помощь.
2 ответа
Не спрашивайте меня, почему, но единственный способ добиться успеха - начать с нуля. Я начал с чистого ноутбука с Windows XP с установленной Visual Studio SP6.
При попытке загрузить и скомпилировать проект появилась та же ошибка. То же самое, если я попытался нарисовать новый экземпляр моего пользовательского элемента управления: Ошибка загрузки DLL И то же самое, если я попытался открыть форму с экземплярами моего пользовательского элемента управления внутри: элемент управления не был распознан в форме (пустые области).
Итак, я запустил новый пустой ActiveX DLL проект. Добавляя все объекты шаг за шагом, я мог загрузить их все (с некоторыми небольшими проблемами), но, наконец, я смог скомпилировать проект.
Порядок добавления объектов был важен: ссылки и компоненты, пользовательские элементы управления, модули и классы, дизайнеры и, наконец, формы.
Я пытался скомпилировать каждый шаг, чтобы определить причину проблемы и узнать следующий объект, который нужно добавить. Но не понимаю точно, почему это работает сейчас. Спасибо, в любом случае!
РЕДАКТИРОВАТЬ 2018-11-07:
Я обнаружил, как можно обойти начальный проект, без проблем использовать пользовательский элемент управления CTL и скомпилировать проект без каких-либо сообщений об ошибках. Я хочу поделиться этим здесь, чтобы помочь любому с подобной проблемой.
Я не знаю почему, может кто-нибудь может дать объяснение, но если я открою проект, а затем открою дизайнер с именем frmDate (см. Изображение), то с этого момента я смогу скомпилировать проект и использовать пользовательский элемент управления на любая форма. Что здесь происходит??
Откройте файл CTL в текстовом редакторе (Блокнот подойдет).
В верхней части могут быть строки, подобные следующим:
VERSION 5.00
Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "MSFlxGrd.ocx"
Там может быть один или несколько Object=
линий.
Вполне вероятно, что хотя бы один из файлов, указанных в одной из этих строк, либо отсутствует, либо не зарегистрирован на компьютере.