* System.Windows.Forms

Currently Windows.Forms support is under heavy development. Check Mono's Roadmap for more details on when it is going to be available.

System.Windows.Forms in Mono is implemented using System.Drawing. All controls are natively drawn through System.Drawing. System.Windows.Forms implements it's own driver interface to communicate with the host OS windowing system. Currently, we have a driver for Win32 and a driver for X11. The drivers translate the native window messages into WndProc compatible messages, to provide as much compatibility with native .Net as possible.

In terms of integrating visually with the desktop, we have a (still incomplete) themeing interface, currently with a classic Win32 theme and a Gtk theme.

The current implementation is still very incomplete, with several large controls (Edit, ListBox, ComboBox, Menus), etc, still being developed. It is too early to file bugs if you cannot compile or run a certain application because of controls missing. * Why not use Wine?

The driver interface should allow us to also create a Wine based driver for System.Windows.Forms, to support applications performing Win32 P/Invokes, but for now this is not a priority. * Installation

To get the Windows.Forms support working, you need:

The current source of System.Windows.Forms resides in mcs/class/Managed.Windows.Forms. The previous version of System.Windows.Forms, based on Wine, still can be found in mcs/class/System.Windows.Forms, but it is no longer being worked on.

To use the latest version, go into Managed.Windows.Forms and issue a 'make clean', followed by a 'make install'. Afterwards, the new implementation should be available in the GAC for your use. * Contributing

The Winforms effort is being coordinated in the mono-winforms-list@ximian.com. If you are interested in helping out with this effort, subscribe to it by sending an email message to mono-winforms-list-request@ximian.com.

If you want to help, you can pick a control and start implementing it's methods. You can do this either on Windows or on Linux. All controls must be drawn using System.Drawing calls, tied into the themeing interface, and not stubbed.

If you choose a particular control to work on, send a note to the winforms list to avoid duplication of effort. * System.Drawing

For details, see the System.Drawing implementation notes section of the web site.