2013-08-17 36 views
6

我試圖使用的WinForms爲單聲道C#我的Mac上一個簡單的應用,所以到目前爲止,我已經測試此代碼爲什麼Winforms在Mono中沒有打開任何窗口?

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

但沒有窗口打開時,我測試了一下,任何幫助嗎?我想我的問題是特定於Mono的。

+0

Winforms對gdi32.DLL使用paint調用我相信這可能是問題 – Sayse

+0

@Sayse,Mono的WinForms不依賴於gdi32,而是依賴於libgdiplus。這使WinForms應用程序可以移植到除Windows之外的其他平臺。 –

+1

你最好從命令提示符/終端啓動它,看看是否有任何異常拋出。 –

回答

5

我有同樣的問題,運行os x mavericks + mono 3.2.3。

我從這裏構建的演示:http://mono-project.com/Mono_Basics,前兩個工作(控制檯+ GTK),但第三個(dotnet)什麼都不做,當我從終端運行它,不拋出任何錯誤,我只使CPU負載,但沒有窗口顯示...

最後,我發現解決方案,第一個dotnet運行的,它需要約1分鐘,直到窗口顯示,在下一次運行它是即時的。當我測試時,我在5-10秒後殺死了這個進程,所以這就是爲什麼我第一次嘗試不爲我工作的原因...

+1

在os上重新安裝單聲道後出現同樣的問題 - 當我嘗試運行winform示例應用程序時(在Windows上的Visual Studio中創建基本的winform項目並打開在Xamarin)沒有形式顯示,也沒有例外。等待30秒左右的表演,然後所有的winform項目立即開始工作。也許第一次運行編譯一些單聲道依賴關係,我沒有找到關於它的信息? –

+0

有沒有人知道mono在第一分鐘內正在做什麼?後續運行似乎更快。我猜測它是預先編譯DLL的,但[doc](http://www.mono-project.com/docs/getting-started/mono-basics/)說這只是在OS X上,儘管,所以我不知道爲什麼這樣的行爲。 – sindux

相關問題