You can't have a constructor like that, the designers won't know what to do with it.
The key to getting this done is to take advantage of the designer architecture to get a reference to the form at design time, and making it set a property on your component.
Make yourself a public (not necessarily browsable) property on the Component of type Form. You're going to need to override the Site property, and simply call back to the base site for implementation.
In the Site setter after you've run the base implementation, call GetService on the site you got (assuming you got one) to get an instance of IDesignerHost. When you've got this you can use the RootComponent property on that interface to get the root component of the design surface. At this stage it's important to remember that this won't necessarily be a form - someone could put your component on the UserControl designer or even the Component designer too.
Once you've got this RootComponent and established it is of type Form, just assign it to your property (use IComponentChangeService to notify the design environment you've done this, but it's not the end of the world if you don't). That should sort you out - the property will now be set on loading the form, and you can do what you like with it.