2013-08-17 5 views
6

sto cercando di usare WinForms per una semplice applicazione sul mio Mac in Mono C#, finora ho provato questo codicePerché Winforms in Mono non apre alcuna finestra?

using System; 
using System.Drawing; 
using System.Windows.Forms; 

public class HelloWorld : Form 
{ 
    static public void Main() 
    { 
     Application.Run (new HelloWorld()); 
    } 

    public HelloWorld() 
    { 
     Button b = new Button(); 
     b.Text = "Click Me!"; 
     b.Click += new EventHandler (Button_Click); 
     Controls.Add (b); 
    } 

    private void Button_Click (object sender, EventArgs e) 
    { 
     MessageBox.Show ("Button Clicked!"); 
    } 
} 

Ma nessuna finestra si apre quando verifico che, qualsiasi aiuto? Penso che la mia domanda sia specifica per Mono.

+0

Winforms usa le chiamate paint su gdi32.DLL Credo che questo potrebbe essere il problema – Sayse

+0

@Sayse, Mono's WinForms non si basa su gdi32 ma su libgdiplus. Ciò rende le app WinForms portatili su piattaforme diverse da Windows. –

+1

Faresti meglio a lanciarlo da un prompt dei comandi/terminale e vedere se c'è qualche eccezione generata. –

risposta

5

ho lo stesso problema, in esecuzione os x mavericks + mono 3.2.3.

ho costruito le demo da qui: http://mono-project.com/Mono_Basics, i primi due hanno lavorato (console + gtk), ma il terzo (dotnet) non fa nulla quando l'eseguo dal Terminal, non genera alcun errore, mi fa solo carico della CPU, ma è mostrata nessuna finestra ...

, alla fine, ho trovato la soluzione, alla prima esecuzione dotnet, ci vogliono circa 1 minuto fino a quando la finestra mostra, sulla prossima corsa è immediato. quando stavo testando, stavo uccidendo il processo dopo 5-10 secondi, ecco perché non ho lavorato per me al primo tentativo ...

+1

Lo stesso problema, dopo aver reinstallato mono su os x - quando provo a eseguire l'applicazione di esempio winform (creare un progetto winform di base in Visual Studio su Windows e aprire in xamarin) nessuna forma che mostra e nessuna eccezione. Aspettando circa 30sek e spettacoli di moduli, dopo che tutto il progetto winform funziona all'istante. Forse la prima volta compilare alcune dipendenze mono, non ho trovato informazioni su di esso? –

+0

Qualcuno sa cosa sta facendo mono durante quel primo minuto? Le corse successive sembrano più veloci. Immagino che sia pre-JIT-in-dll delle DLL, ma il [doc] (http://www.mono-project.com/docs/getting-started/mono-basics/) dice che questo è solo su OS X sebbene , quindi mi chiedo perché il comportamento. – sindux