Давайте посмотрим на ваш конструктор:
Public Sub New(ByRef Robot As cRobot)
InitializeComponent()
thisRobot = Robot '<-- Problem is here
End Sub
В строке, указанной выше, вы создаете копию ссылки, и поэтому ByRef вам больше не помогает.
Думая о том, как обойти эту проблему, вы можете сделать это, вложив Robot в другой класс:
Public Class RobotContainer
Public Property Robot As Robot
End Class
Передайте экземпляр RobotContainer вашему конструктору в обычном (ByVal) и сохраните ссылку на весь этот объект в вашем классе.Теперь и ваш тип frmCreate, и вызывающий код имеют ссылку на один и тот же объект .Когда вы обновите свойство Robot для этого объекта, оно будет обновлено для обоих местоположений.
Но на самом деле весь этот дизайн не пахнет правильно.Обычно я бы предложил метод, который возвращает созданного робота, вместо того, чтобы пытаться назначить его внешнему местоположению напрямую, но я понимаю, что при работе с элементами управления Windows Forms это может быть не вариант.Чтобы предложить лучшее решение, нам нужно увидеть намного больше вашего кода.
Хм ... оглядываясь назад, я хотел сделать что-то, чтобы сделать RobotContainer более полезным:
Public Class ReferenceContainer(Of T)
Public Property Item As T
End Class