2015-02-08 15 views
5

Thư viện Windows.Forms chứa nhiều lỗi ngăn chặn các ứng dụng hoạt động hiệu quả. WinForms Designer không thể đặt điều khiển WebBrowser trên biểu mẫu. Lớp NotifyIcon không hoạt động dưới LXDE (xem trình gỡ lỗi của KeePass). Lớp Clipboard không tương thích với trình quản lý mặc định của Calculate Linux. Kéo và thả có vấn đề trong DockPanelSuite. WinForms Designer chưa hoàn thành vì các vấn đề về độ mờ đục. WPF chưa bao giờ được triển khai và không có kế hoạch thực hiện.Làm thế nào để cổng C# ứng dụng từ cửa sổ cho Linux?

Và nhóm đơn âm nói "chúng tôi không muốn phát triển WinForms, bởi vì đây là công nghệ cũ".

Làm thế nào một ứng dụng C# trên máy tính để bàn từ Windows sang Linux? Viết lại nó với Gtk # dường như quá khó ...

Điều gì là dễ dàng hơn - để sửa lỗi đơn WinForms, để thực hiện WPF, hoặc viết lại tất cả các ứng dụng trên thế giới để Gtk #?

+0

Nhìn vào https://github.com/picoe/Eto và https://github.com/picoe/Eto –

Trả lời

5

Như bạn đã phát hiện ra thi Mono WinForms chỉ phù hợp cho các ứng dụng rất đơn giản. Hãy nhìn vào "Cross-Platform Desktop UIs" bài đăng blog từ nhân viên Xamarin Mike James ai tóm tắt giải pháp có sẵn:

  1. cách tiếp cận truyền thống
    WPF hoặc WinForms frontend trên Windows, GTK# frontend trên Linux và Xamarin.Mac trên Mac OS X. IMO này là cách tốt nhất để đi và có thể dễ dàng hơn nếu bạn đã tách riêng các lớp kinh doanh và bản trình bày trong ứng dụng của mình.
  2. XWT
    XWT toolkit sử dụng API cùng và cung cấp cái nhìn tự nhiên trên tất cả các nền tảng nhưng chỉ có một tập con hữu hạn của các thành phần được thực hiện. Khả năng sử dụng của nó cho các dự án của bạn phụ thuộc vào những thành phần bạn thực sự cần.
  3. Giao diện người dùng HTML
    Tạo lối vào HTML bằng cách sử dụng thành phần WebView đơn giản hoặc Awesomium HTML UI Engine. Đây có thể là một lựa chọn khả thi trong một số trường hợp nhưng tôi không chắc liệu có thể thực hiện các biểu tượng systray với cách tiếp cận này hay không.
  4. QTSHARP
    Dự án nguồn mở nhằm mục đích triển khai .NET bindings cho bộ công cụ QT đa nền tảng. Tôi chưa bao giờ thử nó nhưng theo trang web của dự án, nó dường như đang ở giai đoạn đầu và hiện chỉ được thử nghiệm trên Windows.

BTW Tôi hiện đang sử dụng WinForms cho ứng dụng Pkcs11Admin nhưng tôi định sử dụng phương pháp truyền thống ngay khi tôi nhấn lỗi chặn trên bất kỳ nền tảng được hỗ trợ nào.

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