====== Introduzione alle winforms di mono ======
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//25/03/2013//** \\ \\
Tramite mono e il toolkit winforms è possibile realizzare delle applicazione che fanno uso di interfacce grafiche eseguibili su Gnu/Linux, Windows e MacOSX. Il codice che segue abbondantemente commentato altro non è che una specie di helloworld con tanto di makefile per linux.
===== codice c# =====
**main.cs**
using System;
using System.Drawing;
using System.Windows.Forms;
class MForm : Form {
// E' meglio dichiarare le variabili dei controlli come private
// cosi' saranno accessibili facilmente anche dalle funzioni callback
private Button btn1;
private TextBox tbox;
public MForm() {
//Disegno una finestra
Text = "Test winform";
Size = new Size(210, 210);
//Disegno un bottone e associo una callback
btn1 = new Button();
btn1.Text = "Clicca qui";
btn1.Parent = this; //associo come genitore la finestra corrente "MForm"
btn1.Location = new Point(50, 30);
btn1.Click += new EventHandler(OnClick); //associo la callback di nome OnClick
//disegno una textbox
tbox = new TextBox();
tbox.Text="Ciao mondo";
tbox.Parent = this;
tbox.Location = new Point(50, 60);
//centro la finestra nello schermo
CenterToScreen();
}
void OnClick(object sender, EventArgs e) { //cosa fa quando viene cliccato
// se clicco sul bottone ne cambio l'etichetta
// con il testo della textbox
btn1.Text = tbox.Text;
}
}
class MApplication {
public static void Main() {
Application.EnableVisualStyles(); // per migliorare l'aspetto grafico
MForm mf = new MForm();
Application.Run(mf);
}
}
===== Makefile =====
all:
gmcs -r:System.Windows.Forms.dll -r:System.Drawing.dll -target:winexe main.cs
===== Dipendenze =====
per avviare l'applicazione su windows è necessario avere installato il framework .NET >=2 (qualora non lo fosse gia'), su gnu/linux invece si devono installare gli runtime di mono.
===== Avviare l'applicazione =====
Su gnu/linux basta avviare con ''mono main.exe '', su windows basta invece un doppio click sull'icona dell'eseguibile.