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 :
Et voici un échantillon du thème Fluent Dark :
Dans l’application de démonstration, les thèmes jour et nuit ressembleront à ceci :
À 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 !
Source link