Fermer

octobre 25, 2023

Création d’une application WinForms jour/nuit (mode clair/sombre)

Création d’une application WinForms jour/nuit (mode clair/sombre)


Découvrez comment implémenter le mode sombre dans votre application de bureau avec le thème Fluent Dark et l’interface utilisateur Telerik pour WinForms.

Le mode sombre est devenu monnaie courante dans les applications de nos jours. Mais l’avez-vous implémenté dans vos applications de bureau ? C’est simple et je vais vous montrer comment l’implémenter avec une seule classe et un seul appel de ligne de commande. J’utiliserai Progress
Interface utilisateur Telerik pour WinForms.

Pour mettre en œuvre le Thème sombre, j’utiliserai Fluent Dark, et pour le thème du jour, Fluent. Vous pouvez bien sûr spécifier un autre thème si vous le souhaitez.

L’implémentation que j’utiliserai modifie tous les composants de tous les formulaires de candidature.

Voici un exemple des contrôles Fluent Theme :

Contrôles de thème fluides

Et voici un échantillon du thème Fluent Dark :

Thème Fluent Dark

Dans l’application de démonstration, les thèmes jour et nuit ressembleront à ceci :

Le thème du jour, comme indiqué dans l'application de démonstration

Le thème de la nuit, comme indiqué dans l'application de démonstration

À votre formulaire principal, ajoutez cette ligne de code :

public RadForm1()
{
  InitializeComponent();
  _ = new DayNight(this);
}

Créez et ajoutez à votre projet la classe DayNight:

using  System;
using  Telerik.WinControls;
using  Telerik.WinControls.UI;

namespace TelerikWinFormsApp1;
internal class DayNight
{
  private bool themeDay;
  private RadImageButtonElement signInButton;
  
  public DayNight(RadForm form)
  {
    new Telerik.WinControls.Themes.FluentTheme().DeserializeTheme();
    new Telerik.WinControls.Themes.FluentDarkTheme().DeserializeTheme();
    
    CreateDayNightButton(form);
    
  themeDay = Telerik.WinControls.WindowsSettings.AppsUseLightTheme;

    SetDayNight();
  }

  private  void  CreateDayNightButton(RadForm  form)
  {
    daynightButton = new  RadImageButtonElement
    {
      ThemeRole = "TitleBarMinimizeButton",
      Text = "☾",
      DisplayStyle = DisplayStyle.Text,
      ShowBorder = false,
      AutoSize = false,
      Size = form.FormElement.TitleBar.MinimizeButton.Size
    };
    daynightButton.Click += DayNight_Click;
    form.FormElement.TitleBar.SystemButtons.Children.Insert(0, daynightButton);
  }

  private void DayNight_Click(object sender, EventArgs e)
  {
    themeDay = !themeDay;
    SetDayNight();
  }
  private void SetDayNight()
  {
    if (themeDay)
    {
      ThemeResolutionService.ApplicationThemeName = "Fluent";
      signInButton.Text = "☾";
    }
    else
    {
      ThemeResolutionService.ApplicationThemeName = "FluentDark";
      signInButton.Text = "☼";
    }
  }
}

Si vous préférez ne pas démarrer l’application avec le thème par défaut de Windows, vous pouvez supprimer ce code qui lit le paramètre du registre Windows :

themeDay = Telerik.WinControls.WindowsSettings.AppsUseLightTheme;

Et réglez le themeDay variable à true pour la journée ou false pour la nuit:

themeDay = true;

Le bouton dans la barre de titre du RadForm est créé par la fonction CreateDayNightButton:

private  void  CreateDayNightButton(RadForm  form)
{
  daynightButton = new  RadImageButtonElement
  {
    ThemeRole = "TitleBarMinimizeButton",
    Text = "☾",
    DisplayStyle = DisplayStyle.Text,
    ShowBorder = false,
    AutoSize = false,
    Size = form.FormElement.TitleBar.MinimizeButton.Size
  };
  daynightButton.Click += DayNight_Click;
  form.FormElement.TitleBar.SystemButtons.Children.Insert(0, daynightButton);
}

Le DayNight_Click bascule entre les thèmes :

private void DayNight_Click(object sender, EventArgs e)
{
  themeDay = !themeDay;
  SetDayNight();
}

Et le SetDayNight() effectue ces modifications :

private void SetDayNight()
{
  if (themeDay)
  {
    ThemeResolutionService.ApplicationThemeName = "Fluent";
    signInButton.Text = "☾";
  }
  else
  {
    ThemeResolutionService.ApplicationThemeName = "FluentDark";
    signInButton.Text = "☼";
  }
}

Cette commande change le thème de l’ensemble de l’application :

ThemeResolutionService.ApplicationThemeName = "Fluent";

Conclusion

L’interface utilisateur Telerik pour WinForms et ses thèmes facilitent la mise en œuvre d’un mode sombre pour les applications WinForms. N’hésitez pas à utiliser ceci DayNight classe dans vos propres applications, et si vous avez des suggestions d’amélioration, partagez-les avec nous. N’oubliez pas que vous pouvez contacter la légendaire équipe d’assistance de Telerik pour vous aider à tout moment.

Jetez un œil à ce projet sur GitHub : https://github.com/jssmotta/DayNightTelerikUIForWinForms/

Les clients peuvent consulter : https://github.com/telerik/winforms-sdk

L’interface utilisateur Telerik pour WinForms est livrée avec un essai gratuit de 30 jours, donc si vous ne l’avez pas déjà fait, essayez-le dès aujourd’hui !

Essayez l’interface utilisateur Telerik pour WinForms




Source link

octobre 25, 2023