2013-08-17 9 views
6

Próbuję użyć WinForms dla prostej aplikacji na moim Macu w Mono C#, tak daleko Przetestowałem ten kodDlaczego WinForm w Mono nie otwiera żadnego okna?

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

Ale nie okno otwiera się, kiedy go przetestować, żadnej pomocy? Myślę, że moje pytanie dotyczy Mono.

+0

WinForm używa wywołań farb do gdi32.DLL Wierzę, że to może być problem – Sayse

+0

@Sayse, WinForms Mono nie opiera się na gdi32, ale libgdiplus. To sprawia, że ​​aplikacje WinForm są przenośne na inne platformy niż Windows. –

+1

Lepiej uruchom go z wiersza polecenia/terminalu i sprawdź, czy jest zgłoszony wyjątek. –

Odpowiedz

5

Mam ten sam problem, uruchamiam OS X Mavericks + mono 3.2.3.

zbudowałem demos stąd: http://mono-project.com/Mono_Basics, pierwsze dwa działały (konsola + gtk), ale trzecia (dotnet) nie robi nic, gdy uruchamiam ją z terminala, nie generuje żadnego błędu, tylko ładuje cpu, ale żadne okno nie jest pokazane ...

W końcu znalazłem rozwiązanie, przy pierwszym uruchomieniu w sieci Dotnet, trwa to około 1 minuty, dopóki okno nie wyświetli, przy następnym uruchomieniu jest natychmiastowe. kiedy testowałem, zabijałem proces po 5-10 sekundach, dlatego nie pracowałem dla mnie przy pierwszej próbie ...

+1

Ten sam problem, po ponownym zainstalowaniu mono na os x - kiedy próbuję uruchomić przykładową aplikację Winform (utwórz podstawowy projekt WinForm w visual studio na oknach i otwórz w języku xamarin) bez formy i bez wyjątku. Oczekuje około 30sek i formularzy, po czym wszystkie projekty winform działają natychmiast. Może najpierw uruchomić kompilację niektórych zależności mono, nie znalazłem informacji na ten temat? –

+0

Czy ktoś wie, co mono robi podczas tej pierwszej minuty? Kolejne uruchomienia wydają się szybsze. Zgaduję, że jest to przedinstalowanie bibliotek DLL, ale [doc] (http://www.mono-project.com/docs/getting-started/mono-basics/) mówi, że jest to tylko w systemie OS X , więc zastanawiam się, dlaczego to zachowanie. – sindux

Powiązane problemy