Passa ai contenuti principali

Mono, Windows.Forms e VB.NET

Oggi avevo un pò di tempo libero a disposizione e mi sono dedicato alla versione made in novell di .net, invece di testare i classici esempi in C#, ho deciso di verificare lo stato del compilatore VB.NET e delle Windows.Forms (infatti mono sarà veramente utile quando farà funzionare senza problemi applicazioni complete non esempi costruiti ad hoc).
Al momento ho testato il tutto sul mio MacBook (Leopard 10.5.1, mono 1.2.6) utilizzando come editor smultron, (prometto di testare il tutto su debian in settimana).
Vari helliniword testuali hanno funzionato senza problemi quindi ho provato qualcosa di grafico:
--- Test_VB_Form.vb --
' Spazio dei nomi utilizzati

imports System.Windows.Forms
imports System.Drawing

' Spazio dei nomi MyHeloApp come contenitore per la nostra applicazione
Namespace MyHelloApp

Public Class MainWindow
Inherits Form
' dichiariamo due variabili di istanza, due controlli una textbox e un bottone
' dichiariamo bottone con la parola chiave withEvents che permette di gestirne
' gli eventi.
Public name As TextBox = New TextBox()
Public btnBottone As Button = new Button()

Public Sub New
' Proprietà generali, altezza, larghezza, caption e disposizione sullo schermo
Me.Text = "HelloMyName VB mono"
Me.Width = 300
Me.Height = 300
CenterToScreen()
' Inseriamo una textBox
name.Text=""
name.Size = New Size(150,20)
name.Location = New Point(10,10)
Me.Controls.Add(name)
' Inseriamo il bottone
btnBottone.Text = "cliccami..."
btnBottone.Size = New Size(90,30)
btnBottone.Location = New Point(10,40)
Me.Controls.Add(btnBottone)
' Colleghiamo gli oggetti ai loro gestori di evento
AddHandler Application.ApplicationExit, AddressOf MainWindow_OnExit
AddHandler btnBottone.Click, AddressOf btnBottone_Clicked
End Sub

' Gestiamo il click sul bottone
Public Sub btnBottone_Clicked(ByVal sender As Object, ByVal args As EventArgs) 'Handles btnBottone.Click
Dim stringa As String = String.Format("Hello, {0}", name.Text)
MessageBox.Show(stringa)
End Sub

Public Sub MainWindow_OnExit(ByVal sender As Object, ByVal args As EventArgs)
MessageBox.Show("Uscita...")
End Sub
End Class

Public Module Program
Sub Main()
Application.Run(New MainWindow())
End Sub
End Module

End Namespace

-- End File --
Compilare con: vbnc Test_VB_Form.vb
il risultato è stato abbastanza buono:
inoltre nelle future versioni Windows.Forms su OSX sarà implementato in maniera nativa mentre per il momento gira sotto X11, ma questo è il minore dei mali al momento.
Ho quindi optato per provare qualcosa più complesso una semplice forms che utilizza controlli più avanzati come lo slider, il calendario i tabs e i nuovi layout di .NET 2.0:
La form fa parte dello stage alpha di un minigestionale che avevo scritto per g&g snc quache annetto fa.
La forms funziona ma... Ma se si fa un qualsiasi resize della finestra X11 spara fuori un sacco di errori e il programma viene freezato, in settimana cercherò di verificare se su linux da gli stessi problemi (infatti non è la prima volta che sotto leopard x11 mi tira strani scherzi).
Conclusione? Il progetto mono sta venendo su bene, e se a livello etico i puristi si sdegnano di avere .net sul proprio sistema operativo c'è da dire che avere la possibilità di sfruttare il software .net sula propria macchina è una comodità incredibile :), inoltre per chi sviluppa con prodotti microsoft si aprono nuove prospettive multipiattaforma.
In realtà mono è ancora lontano da .net già un software come paint.net non gira :(
Inoltre microsoft sviluppa .net a ritmo frenetico e si corre il rischio di avere un mono 2.0 funzionale con tutti gli assembly di net 2.0 e 3.5 e magari microsoft è già al lavoro su .net 5.0... Comunque il progetto senza dubbio merita di essere seguito.
Alternative? per i programmatori C++ wxwidgets, QT. (e le gtk? nulla! finchè non si ha una versione nativa osx)... per i programmatori visual basic: RealBasic e KBasic (tutta roba commerciale ma stiamo guardando al multipiattaforma quindi per ora niente gambas), per i programmatori C#... bè sicuramente java... :) :)

Commenti

Anonimo ha detto…
Beh il fatto che microsoft rilasci continue versioni (1.0, 1.1, 2.0, 3.0, 3.5 ecc...) non significa affatto che ci lavora a ritmo frenetico. Il core è sempre quello il resto...solo fumo negli occhi, come ha sempre fatto con i sistemi operativi.
Pertanto, mono è più che maturo (infatti già supporta la versione .net 3.5 quasi al completo).
Saluti
Anonimo ha detto…
Perchè ritieni che WPF, WCF, WF, Entity Framework, Linq, Extensions Method, Lambda Expressions bla bla bla siano solo fumo negli occhi?
Ritieni che vista, dopo aver letto questo http://blogs.ugidotnet.org/raffaele/archive/2008/11/27/94770.aspx , sia solo fumo negli occhi?
The Fox II ha detto…
Dove posso trovare la documentazione di VB Net per mono?

Post popolari in questo blog

Notebook senza Sistema operativo qualcosa si muove :)

Ok in passato ho recensito con piacere diversi notebook a basso costo con linux a bordo, ma oggi a causa di un cliente che necessitava di 4 notebook con freebsd (al momento non divago ma ci tornerò a breve) ho setacciato il web alla ricerca di notebook "degnamente potenti" ad un costo accessibile ho un bugdet di 2000 euro installazione compresa gh:(.. Be' in passato ho parlato bene di syspack, unieuro, mediaworld e tecnologie creative oggi prendiamo in esame monclik, allora da questo ottimo rivenditore ho trovato un notebook msi molto molto carino: Dimensioni schermo 15.4 Widescreen Tipo processore Core 2 Duo (Centrino Duo) Velocità del processore 1.7 GHz Memoria RAM 1 GB Hard disk 120 GB Peso (Kg) 2,87 Sistema operativo Non Presente Connessioni Ethernet e wireless Unità ottiche Masterizzatore DVD±RW Double Layer Webcam Non integrata Scheda grafica Intel GMA X3100 Un bel 15 e passa pollici :), gma x3100 che ha un ottimo supporto e un bel processore core 2 duo a 1,7 ghz il...

osx e chm rigorosamente opensource

Per citare wikipedia: " Microsoft Compressed HTML Help o CHM è un formato proprietario per file di aiuto in linea, sviluppato da Microsoft e rilasciato nel 1997 come successore di Microsoft WinHelp. È stato rilasciato per la prima volta con Windows 98 ed è ancora distribuito e supportato sulla piattaforma Windows XP. I file HTML Help sono creati con appositi strumenti. Microsoft distribuisce l'HTML Help Workshop con le versioni supportate di Windows e lo rende disponibile gratuitamente per il download. Ci sono anche divers strumenti di terze parti ." Spesso e volentieri, per lavoro e per piacere, ci troviamo a dover leggere libri o documentazione tecnica in chm, visto che ultimamente mi trovo spesso ad utilizzare osx come piattaforma desktop principale spero che questa piccola recensione di quattro software opensource per la visualizzazione di questo formato possa essere utile a quanti utilizzano il sistema operativo della mela :) il primo software che presento è il mio p...

CSS Callout for Bootstrap

A small css for the box-type "callout" similar to those used in the documentation of twitter bootstrap. (Boostrap is required :-)) /* callout like bootstrap docs */ .bs-callout { margin: 20px 0; padding: 15px 30px 15px 15px; border: 1px solid #eee; border-left: 5px solid #eee; border-radius: 3px; } .bs-callout h4 { margin-top: 0; } .bs-callout p:last-child { margin-bottom: 0; } .bs-callout code, .bs-callout .highlight { background-color: #fff; } .bs-callout-danger { border-left: 5px solid #dFb5b4; } .bs-callout-danger h4 { color: #B94A48; } .bs-callout-warning { border-left: 5px solid #C09853; } .bs-callout-warning h4 { color: #f1e7bc; } .bs-callout-info { border-left: 5px solid #d0e3f0; } .bs-callout-info h4 { color: #3A87AD; } .bs-callout-primary { border-left: 5px solid #285e8e; } .bs-callout-primary h4 { color: #428bca; } .bs-callout-...