Welcome to MonoGame.Forms!
MonoGame.Forms is the easiest way of integrating a MonoGame render window into your windows forms project. It should make your life much easier, when you want to create your own editor environment.
With the beginning of the year 2017 I started to research the possibility of integrating MonoGame into a WindowsForms project, so it would have been possible for me to create my own editor environments.
Since then some projects saw the light of the day like the PenumbraPhysics.Editor or the Rogue Engine Editor. I worked with them alot to find the best possible way of handling the window management and MonoGame related stuff like SpriteBatch, ContentManager, GameTime and so on.
During that time I also heared some people saying that they need a simple render window integration for their own custom editor projects - it was about time to create the MonoGame.Forms PCL!
So yes, it isnāt something very complex, but it is enough for a basic integration where you can build upon. It currently lacks 3D services, because I have no knowledge in this area. But itās well suited for 2D.
Initializing, Updating and Drawing works the same like you are currently doing in MonoGame. You can also have multiple render windows in one project. There is also a Camera2D component so you can move the control view.
Adding one render control to your forms project is fairly easy:
You just inherit from the DrawWindow or UpdateWindow class and override the corresponding Initialize() [Update()] and Draw() methods. A draw window is updated through invalidation. An update window is updated by a real game loop. When you are building the project, the toolbox controls are created automatically for you. You just need to drag and drop them where they should be!
Donāt worry; I have also written a sample project, from which you can learn and a more detailed tutorial you will find in the Readme.md of the GitHub project.
If you want to know more about MonoGame.Forms then please visit the GitHub repo. You can build the PCL from source or even install it through NuGet.