====== 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.