当前位置: 首页 > news >正文

界面组件Telerik UI for WinForms中文教程 - 创建明暗模式的桌面应用

黑暗模式现在在很多应用程序中都挺常见的,但如何在桌面应用程序中实现它呢?这很简单,本文将为大家介绍如何使用一个类和命令行调用来实现!

Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件。所有的UI for WinForms控件都具有完整的主题支持,可以轻松地帮助开发人员在桌面和平板电脑应用程序提供一致美观的下一代用户体验。

获取Telerik UI for WinForms新版下载(Q技术交流:726377843)

为了实现黑暗主题,我们将使用Fluent Dark,对于day主题将使用Fluent,如果您喜欢也可以指定另一个主题。

下面是一个Fluent主题控件的示例:

界面组件Telerik UI for WinForms中文教程

下面是Fluent Dark Theme的一个示例:

界面组件Telerik UI for WinForms中文教程

在演示应用程序中,白天和夜晚主题看起来像这样:

界面组件Telerik UI for WinForms中文教程

界面组件Telerik UI for WinForms中文教程

实现Day/Night菜单

在您的主表单中,添加这行代码:

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

创建并添加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 = "☼";
}
}
}

如果您不喜欢用Windows默认主题启动应用程序,可以删除从Windows注册表读取设置的代码:

themeDay = Telerik.WinControls.WindowsSettings.AppsUseLightTheme;

并将themeDay变量设置为白天为true,夜晚为false:

themeDay = true;

RadForm的标题栏中的按钮是由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);
}

DayNight_Click在主题之间切换:

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

SetDayNight()执行这些更改:

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

这个命令改变了整个应用程序的主题:

ThemeResolutionService.ApplicationThemeName = "Fluent";
总结

Telerik UI for WinForms和它的主题使实现WinForms应用程序的暗模式变得很容易,可以在自己的应用程序中使用这个DayNight类。

http://www.lryc.cn/news/245880.html

相关文章:

  • C语言:输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数
  • 王者荣耀java版
  • 前缀和与差分
  • 力扣hot100 滑动窗口最大值 单调队列
  • mysql MHA配置文件
  • 策略算法与Actor-Critic网络
  • 基于Pytest+Requests+Allure实现接口自动化测试
  • 【中间件】消息队列中间件intro
  • 从 RBAC 到 NGAC ,企业如何实现自动化权限管理?
  • vue3中如何使用TypeScript?
  • Git基础操作:合并某个分支的一个目录到另一个分支
  • 学习grdecl文件格式
  • Excel使用VLOOKUP查询数据
  • SpectralGPT: Spectral Foundation Model 论文翻译2
  • Java编译过程中的JVM
  • Python BDD 框架比较之 pytest-bdd vs behave
  • 【面经八股】搜广推方向:常见面试题(一)
  • 斐讯K2结合Padavan实现锐捷认证破解方法
  • SpringBoot : ch06 整合 web (一)
  • C++:OJ练习(每日练习系列)
  • C语言—什么是数组名
  • 如何与死锁斗争!!!
  • 【Java并发】聊聊不安全的HashMap以及ConcurrentHashMap
  • 数据结构--->单链表
  • RT-Thread 线程间同步【信号量、互斥量、事件集】
  • B 树和 B+树 的区别
  • Go iota简介
  • PyQt6库和工具库QTDesigner安装与配置
  • 性能测试:系统架构性能优化思路
  • python字符串格式化