Вы ссылаетесь на экземпляр по умолчанию типа mainform
в этом коде.Экземпляры по умолчанию предоставляются чем-то автоматически генерируемым при создании проектов приложений Windows Forms.Проекты библиотеки классов не имеют такой вещи, как экземпляры по умолчанию, поэтому любой код, который пытается их использовать, будет пытаться получить доступ к членам экземпляра, как если бы они были Shared
.
. Вам нужно где-то поместить экземпляр иизмените свой код, чтобы ссылаться на это вместо этого.Если вы используете глобальную переменную, которая сама по себе не идеальна, а является самой простой опцией, где вы находитесь, тогда вы можете просто найти и заменить в файлах, чтобы найти ссылки, которые нужно изменить.
Примечаниечто экземпляры по умолчанию - это то, что большинство опытных разработчиков предложили бы избегать в любом случае.Их нет в C #, и я никогда не слышал жалоб на это, так что это вряд ли обременительно.Они были добавлены в VB для удобства начинающих и мигрирующих разработчиков VB6, которые не привыкли к правильному ООП.
РЕДАКТИРОВАТЬ:
Я не тестировал его, но вы можете использоватьApplication.OpenForms(0)
чтобы получить ссылку на форму запуска в любом месте вашей библиотеки.Возможно, вы могли бы добавить такой модуль:
Module Module1
Private _mainform As Form1
Public ReadOnly Property mainform As mainform
Get
If _mainform Is Nothing Then
_mainform = DirectCast(Application.OpenForms(0), mainform)
End If
Return _mainform
End Get
End Property
End Module
, и тогда ваш код может даже просто работать как есть.