[Mono-devel-list] Mono on Windows HOWTO

Brian Rose lists at brianrose.net
Wed Oct 20 13:24:27 EDT 2004

I went to the documentation page to find some information on how to use 
Mono on my WindowsXP system. This is what I found...

   Mono Handbook
   Mono on Windows: Getting started

   To install Mono, get the Windows installer for Mono from
   http://www.mono-project.com/downloads/ and run it.

   (TODO: this needs to be filled in more by someone who uses
   Mono on Windows.)

So it looks like I unwittingly volunteered for the Windows documentation job!

Anyway, I downloaded the installer and followed the instructions. I was 
able to get a basic console "Hello World" app running. Now I'd like to make 
a form-based program to create a simple Windows GUI program.

I created the source program (listed below) because it seemed simple enough 
(not too many GUI "Hello World" apps out there). It is based on GTH#, which 
I understand is installed with the Windows installer. When I compile it I 
get the following error...

   Mono version 1.0.1 Build 1
   Prepending 'C:\PROGRA~1\MONO-1~1.2\bin' to PATH

   C:\cygwin\home\brose\bmp2disp>mcs gui.cs
   gui.cs(20) error CS0246: Cannot find type `DeleteEventArgs'
   gui.cs(4) error CS0246: The namespace `Gtk' can not be found (missing
   assembly reference?)
     Try using -r:gtk-sharp
   gui.cs(5) error CS0246: The namespace `GtkSharp' can not be found
   (missing assembly reference?)
     Try using -r:gtk-sharp
   gui.cs(7) error CS0246: The namespace `System.Drawing' can not be found
     (missing assembly reference?)
     Try using -r:System.Drawing
   Compilation failed: 4 error(s), 0 warnings

So I try it with the references...

   C:\cygwin\home\brose\bmp2disp>mcs -r:gtk-sharp -r:System.Drawing gui.cs
   error CS0006: Cannot find assembly `gtk-sharp'

   Compilation failed: 1 error(s), 0 warnings

So how do I find the gtk-sharp assembly or see what assemblies are installed?

// helloworld.cs - Gtk# Tutorial example

using Gtk;
using GtkSharp;
using System;
using System.Drawing;

public class helloworld {

/* This is a callback function. The data arguments are ignored
  * in this example. More on callbacks below. */
static void hello (object obj, EventArgs args)
	Console.WriteLine("Hello World");
	Application.Quit ();

static void delete_event (object obj, DeleteEventArgs args)
	/* If you return FALSE in the "delete_event" signal handler,
	 * GTK will emit the "destroy" signal. Returning TRUE means
	 * you don't want the window to be destroyed.
	 * This is useful for popping up 'are you sure you want to quit?'
	 * type dialogs. */
     Console.WriteLine ("delete event occurred\n");
     Application.Quit ();

public static void Main(string[] args)
	/* This is called in all GTK applications. Arguments are parsed
	 * from the command line and are returned to the application. */
	Application.Init ();

	/* create a new window */
	Window window = new Window ("helloworld");
	/* When the window is given the "delete_event" signal (this is
	 * given by the window manager, usually by the "close" option, or
	 * on the titlebar), we ask it to call the delete_event ()
	 * function as defined above. The data passed to the callback
	 * function is NULL and is ignored in the callback function. */

	window.DeleteEvent += new DeleteEventHandler (delete_event);

	/* Sets the border width of the window. */
	window.BorderWidth = 10;
	/*  gtk_container_set_border_width (GTK_CONTAINER (window), 10);*/

	/* Creates a new button with the label "Hello World". */
	Button btn = new Button ("Hello World");

	/* When the button receives the "clicked" signal, it will call the
	 * function hello() passing it NULL as its argument.  The hello()
	 * function is defined above. */
	btn.Clicked += new EventHandler (hello);

	/* This packs the button into the window (a gtk container). */
	window.Add (btn);

	/* The final step is to display this newly created widget. */
	window.ShowAll ();

	/* All GTK applications must have a gtk_main(). Control ends here
	* and waits for an event to occur (like a key press or
	* mouse event).
	* In C#, we use Application.Run(), as used in Windows.Forms*/

	Application.Run ();




More information about the Mono-devel-list mailing list