You can't see because of inheritance and polymorphism.
Forms, in .NET, inherit from a base class called Form. You FormA is a class derived from Form, as is FormB.
Now, Form has a reference to an Owner form,
public Form Owner { get; }
You assigned a FormA to it. No problem! Derived classes can be treated as their base classes. But, if you access it, you get back a Form, so what you need to do is cast the new form back to the Form you actually provided:
FormA form = (FormB)Owner;
This is almost the same as doing:
FormA form = Owner as FormB;
But there are some caveats. The as
operator is a "safe cast", which returns nulls if the object isn't of the provided type.
I'd recommend you just you the code we provided and, when you get the time, study Inheritance and Polymorphism. They are key to understanding what is happening.
If I may do some self-promotion, I wrote a piece on why you'd generally avoid as
which you may find interesting, in time.