2013-08-17 16 views
6

Tôi đang cố gắng sử dụng Winforms cho một ứng dụng đơn giản trên máy Mac của tôi trong Mono C#, cho đến nay tôi đã thử nghiệm mã nàyTại sao Winforms trong Mono không mở bất kỳ cửa sổ nào?

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

Nhưng không có cửa sổ đang mở khi tôi kiểm tra nó, bất kỳ sự giúp đỡ? Tôi nghĩ câu hỏi của tôi dành riêng cho Mono.

+0

Winforms sử dụng các cuộc gọi sơn tới gdi32.DLL Tôi tin rằng đây có thể là vấn đề – Sayse

+0

@Sayse, WinForms của Mono không dựa vào gdi32 nhưng libgdiplus. Điều đó làm cho các ứng dụng WinForms di động sang các nền tảng khác so với Windows. –

+1

Bạn nên khởi động nó từ một dấu nhắc lệnh/thiết bị đầu cuối và xem nếu có bất kỳ ngoại lệ ném. –

Trả lời

5

tôi có cùng sự cố, chạy os x mavericks + mono 3.2.3.

tôi đã tạo bản trình diễn từ đây: http://mono-project.com/Mono_Basics, hai bản đầu tiên hoạt động (console + gtk) nhưng thứ ba (dotnet) không làm gì khi tôi chạy nó từ Thiết bị đầu cuối, không ném bất kỳ lỗi nào, tôi chỉ tải cpu, nhưng không có cửa sổ nào được hiển thị ...

cuối cùng, tôi tìm thấy giải pháp, trên lần chạy dotnet đầu tiên, phải mất khoảng 1 phút cho đến khi cửa sổ hiển thị. khi tôi đang thử nghiệm, tôi đã giết quá trình sau 5-10 giây, vì vậy đó là lý do tại sao tôi không làm việc cho tôi lần đầu tiên ...

+1

Vấn đề tương tự, sau khi cài đặt lại mono trên os x - khi tôi thử chạy ứng dụng mẫu winform (tạo dự án winform cơ bản trong studio trực quan trên cửa sổ và mở trong xamarin) không có hình thức hiển thị và không có ngoại lệ. Chờ đợi khoảng 30sek và các chương trình biểu mẫu, sau đó tất cả các dự án winform làm việc ngay lập tức. Có lẽ đầu tiên chạy biên dịch một số phụ thuộc mono, tôi đã không tìm thấy thông tin về nó? –

+0

Có ai biết mono đang làm gì trong 1 phút đầu tiên không? Các lần chạy tiếp theo có vẻ nhanh hơn. Tôi đã đoán nó là tiền JIT-ing các DLL, nhưng [doc] (http://www.mono-project.com/docs/getting-started/mono-basics/) nói rằng đây chỉ là trên OS X mặc dù , vì vậy tôi tự hỏi tại sao các hành vi. – sindux

Các vấn đề liên quan