winforms multiplateforme pour .net · open source · bêta

WinForms en entrée. Multiplateforme en sortie.

Majorsilence.Forms est une bibliothèque WinForms multiplateforme pour .NET — une couche de compatibilité Windows Forms qui fait passer les applications WinForms existantes et modernes sur une pile moderne. Gardez vos Forms, vos contrôles, vos gestionnaires d'événements et vos fichiers *.Designer.cs tels quels — exécutez-les sous Linux, sous macOS et sous Windows depuis une seule compilation, avec le mobile et le web à portée de main grâce aux cibles Android, iOS et Browser propres à Avalonia ou grâce à Uno Platform. Sept backends hôtes partagent un même modèle de contrôles — dont une fenêtre GTK 4 sous Linux, un terminal, et des passerelles WinForms et WPF qui permettent à une application Windows de migrer un contrôle à la fois.

Avalonia Uno Platform GTK 4 Terminal WinForms · WPF Headless SkiaSharp .NET 10
7
Backends de plateforme
Win · macOS · Linux
Bureau, prêt à l'emploi
iOS · Android · Wasm
Accessibles via Avalonia ou Uno
MIT
Open source
pourquoi majorsilence.forms

Réduisez la migration, pas votre base de code.

Migrer une application WinForms signifie généralement une réécriture complète dans un nouveau paradigme d'interface — XAML, MVVM, le web. C'est coûteux, risqué, et cela jette des années de logique métier et d'expérience utilisateur qui fonctionnent. Majorsilence.Forms reproduit la surface d'API de WinForms et fournit une couche de compatibilité pour que vos formulaires, contrôles et code existants passent de l'autre côté avec bien moins de remaniements.

Réutiliser, pas réécrire

Le même modèle de contrôles et le même code événementiel que vous avez écrits en WinForms. Pas de XAML, pas de réécriture MVVM imposée, pas de framework à réapprendre.

Multiplateforme par construction

Tout est dessiné avec SkiaSharp et s'exécute sur un backend hôte interchangeable — Avalonia par défaut pour le bureau, avec ses propres cibles Android/iOS/Browser comme une voie vers le mobile et le web, Uno Platform comme une autre, et une vraie fenêtre GTK 4 sous Linux.

Migrer un contrôle à la fois

Les backends WinForms et WPF, réservés à Windows, hébergent des contrôles Majorsilence.Forms dans l'application que vous livrez déjà — ToWinFormsControl(), ToWpfElement() — sur .NET 10 ou .NET Framework 4.8. Portez morceau par morceau, puis changez de backend pour passer au multiplateforme.

Thème en CSS

Un petit sous-ensemble de CSS, entièrement documenté, définit chaque jeton de couleur et de police et stylise les contrôles par type et par état. Modifiez en direct dans Theme Studio, et appliquez la même feuille à de vrais contrôles WinForms ou Avalonia natifs dans une application mixte.

MVVM quand vous le voulez

Majorsilence.Forms.Mvvm relie INotifyPropertyChanged et ICommand aux contrôles sans réflexion — compatible trimming et AOT, et à l'aise aux côtés de CommunityToolkit.Mvvm. Optionnel ; jamais obligatoire.

Moderne sous le capot

Rendu Skia accéléré par le GPU, HiDPI, gestes tactiles, trames d'animation, .NET à jour — plus Majorsilence.Forms.Essentials pour le stockage sécurisé, la synthèse vocale et l'ouverture de liens sur chaque plateforme.

Testable et accessible

Un seul arbre d'automatisation pilote les tests d'interface en processus, un serveur W3C WebDriver pour Selenium, un serveur MCP pour les assistants IA, les lecteurs d'écran Windows et un miroir DOM ARIA dans le navigateur.

Boîtes de dialogue asynchrones, partout

Chaque modale a un jumeau asynchrone — ShowDialogAsync, MessageBox.ShowAsync — pour que le même code s'exécute dans le navigateur et sur les téléphones, où une boucle bloquante n'est pas possible. Un analyseur fourni signale les appels bloquants avant la livraison.

comment ça marche

Un seul modèle de contrôles, un hôte interchangeable en dessous.

Majorsilence.Forms possède les contrôles et le rendu ; le backend ne fait que poser des pixels à l'écran et acheminer les entrées. C'est cette couture qui permet à la même application de cibler Avalonia aujourd'hui et Uno demain — ou de s'exécuter sans modification dans un terminal. Le cœur cible à la fois net8.0, net10.0 et netstandard2.0 ; les backends WinForms et WPF ajoutent net48 pour qu'une application .NET Framework 4.8 puisse aussi l'héberger.

Votre application (Forms, contrôles, fichiers Designer — le modèle WinForms que vous connaissez) │ Majorsilence.Forms (contrôles + API compatible WinForms, dessinés avec SkiaSharp) │ Backend hôte interchangeable ├─ Avalonia → Windows · macOS · Linux (défaut) · aussi Android · iOS · Browser ├─ Uno → bureau · iOS · Android · WebAssembly ├─ GTK 4 → vraie fenêtre GTK, Linux d'abord (gir.core), aussi Windows/macOS avec le runtime GTK ├─ Terminal → le formulaire remplit un terminal : graphiques Kitty, Sixel ou blocs Unicode ├─ WinForms → passerelle de migration Windows : s'intègre à une app WinForms existante, portage par étapes ├─ WPF → passerelle de migration Windows, même forme, pour les apps WPF └─ Headless → rendu hors écran pour les tests / la CI
un formulaire ressemble exactement à ce que vous attendez

Program.cs, inchangé.

MainForm.cs
using Majorsilence.Forms;

public class MainForm : Form
{
}
Program.cs run
static void Main (string [] args)
{
    Application.Run (new MainForm ());
}
exemples

De vraies applications, pas des démos jouets.

Explorez tous les exemples du dépôt — un clone de l'Explorateur Windows, un clone d'Outlook, une application de point de vente client/serveur avec sa propre API et sa base de données, la même galerie de contrôles complète tournant sur le bureau, Uno, GTK 4, le navigateur, Android, iOS, WPF et dans un terminal, un Theme Studio CSS en direct, une interopérabilité WinForms bidirectionnelle, et Majorsilence.Forms intégré dans des applications hôtes Avalonia, Uno, GTK 4 et WinForms.

commencez ici

La réponse à la question qui vous a amené ici.

La plupart des gens arrivent en cherchant une chose précise — si Windows Forms peut tourner sous Linux, ce que coûte réellement une couche de compatibilité WinForms, ou comment cela se compare à une réécriture en MAUI ou Avalonia. Chacune de ces questions a sa propre page.

WinForms multiplateforme, expliqué

Pourquoi System.Windows.Forms est réservé à Windows, les trois façons de contourner cela, et ce qu'une réimplémentation compatible au niveau de l'API abandonne.

WinForms peut-il tourner sous Linux ?

Pas tel quel — le portage de Mono a disparu depuis longtemps et GDI+ n'y est pas. Ce qui fonctionne à la place sous Ubuntu, Fedora et Debian, et comment le livrer.

WinForms peut-il tourner sous macOS ?

NSWindow natif sur Apple Silicon et Intel, ce qui n'y fait pas très Mac, et l'empaquetage d'un .app.

Migrer une application existante

La CLI majorsilence-migrate fait la réécriture mécanique — espaces de noms, fichiers projet, ressources — sous la forme d'un diff git lisible.

Alternatives à WinForms comparées

MAUI, Avalonia, Uno Platform, Eto.Forms, WPF et Wine — mesurés selon la part de votre code existant que chacun conserve.

FAQ

Les fichiers Designer fonctionnent-ils encore ? Y a-t-il un concepteur visuel ? Qu'en est-il de VB.NET, de DataGridView, de System.Drawing et de la maturité pour la production ?