2013-08-17 2 views
6

Ich versuche WinForms für eine einfache Anwendung auf meinem Mac in Mono C# zu verwenden, ich habe diesen Code bisher getestetWarum öffnet Winforms in Mono kein Fenster?

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!"); 
    } 
} 

Aber kein Fenster zu öffnen, wenn ich es testen, jede mögliche Hilfe? Ich denke meine Frage ist spezifisch für Mono.

+0

Winforms verwendet Lackaufrufe zu gdi32.DLL Ich glaube, das könnte das Problem sein – Sayse

+0

@Sayse, Monos WinForms verlässt sich nicht auf gdi32, sondern auf libgdiplus. Das macht WinForms-Apps auf andere Plattformen als Windows portierbar. –

+1

Sie sollten es besser von einer Eingabeaufforderung/Terminal starten und sehen, ob eine Ausnahme ausgelöst wird. –

Antwort

5

Ich habe das gleiche Problem, unter OS x Mavericks + Mono 3.2.3.

ich baute die Demos von hier: http://mono-project.com/Mono_Basics, die ersten beiden arbeiteten (Konsole + GTK), aber die dritte (Dotnet) tut nichts, wenn ich es vom Terminal ausführen, wirft keinen Fehler, ich macht nur CPU laden, aber kein fenster wird angezeigt ...

am ende fand ich die lösung, auf dem ersten dotnet run, es dauert etwa 1 minute bis das fenster zeigt, auf den nächsten lauf ist es augenblicklich. als ich testete, tötete ich den prozess nach 5-10 sekunden, deshalb habe ich beim ersten versuch nicht für mich gearbeitet ...

+1

Gleiches Problem, nach der Neuinstallation von Mono auf OS X - wenn ich versuche, winform Beispielanwendung ausführen (Erstellen Sie grundlegende winform Projekt in Visual Studio auf Windows und öffnen in Xamarin) keine Form und keine Ausnahme. Warten auf 30sek und form zeigt, danach alle winform projekt arbeiten sofort. Vielleicht kompilieren Sie einige Mono-Abhängigkeiten zuerst, habe ich keine Informationen darüber gefunden? –

+0

Weiß jemand, was Mono in dieser ersten Minute macht? Nachfolgende Läufe scheinen schneller zu sein. Ich vermutete, dass es die DLLs vorverlegt, aber die [doc] (http://www.mono-project.com/docs/getting-started/mono-basics/) sagt, dass dies nur unter OS X der Fall ist Also frage ich mich warum das Verhalten ist. – sindux