首页 > 其他分享 >界面组件Telerik UI for WinForms中文教程 - 创建明暗模式的桌面应用

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

时间:2023-11-23 13:55:20浏览次数:90  
标签:Telerik form Text private WinForms UI themeDay DayNight

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

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

获取Telerik UI for WinForms新版下载

技术交流群: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类。

标签:Telerik,form,Text,private,WinForms,UI,themeDay,DayNight
From: https://www.cnblogs.com/AABBbaby/p/17851390.html

相关文章

  • arduino基础语法
     ***通信***上位机与下位机通信管道Serial.begin(57600)设置波特率(通信速率)下位机-------->上位机Serial.print();//打印函数Serial.println();//换行打印函数上位机-------->下位机Serial.available();//获取传输的字节数 Serial.read();//一次读取一个字节**......
  • easyui-textbox,高度自适应
    实现方式:通过自定义验证方法监控input内容输入,当出现滚动条时修改输入框高度。//高度自适应//params[0]input标签下textarea的初始height$.extend($.fn.validatebox.defaults.rules,{textAutoHeight:{validator:function(value,params){if(pa......
  • UniApp打包教程:使用HBuilder X和AppUploader完成原生App云打包和上架指南"
    ​目录 uniapp进行打包使用上架工具appuplode进行发包1.登录appuploder软件     2.登陆开发者AppStore后台 uniapp进行打包在HBuilderX编辑器中打开需要打包的项目,然后点击上面菜单栏中发行=>原生App-云打包,对以下弹出的弹窗进行内容填写   ​......
  • Python GUI编程
    #!/usr/bin/python--coding:UTF-8--Python2.x导入方法fromTkinterimport*#导入Tkinter库Python3.x导入方法#fromtkinterimport*root=Tk()#创建窗口对象的背景色#创建两个列表li=['C','python','php','htm......
  • This application requires a java runtime environment 1.6.0
    解决Thisapplicationrequiresajavaruntimeenvironment1.6.0问题描述在安装ptolemyII的时候,提示我没有java运行环境。但是实际上作为jvm的hn,我电脑上就有各种版本的jdk,什么环境变量、java-version都保证没问题,别的软件也能运行,就它不行问题解决jdk是通过解压而后设......
  • JD-GUI 反编译jar包
    JD-GUI反编译jar包,jar包反编译成java文件下载网上开源jar包或者其他项目提供了jar但是没有源码此时需要反编译1.下载jd-guihttps://jd-gui.apponic.com/mac/选择适合自己的版本2.解压tar-xvfjd-gui-osx-1.6.6.tar3.点击jd-gui.app打开软件如果出现无法验证开发者,你确定要运行此......
  • JuiceFS 用户必备的 6 个技巧
    随着大数据、AI技术的发展,越来越多的企业、团队和个人开始使用JuiceFS,本文整理了6个超实用的JuiceFS技巧,帮助大家提升JuiceFS的管理效率。一、查看已挂载的文件系统有时候你可能在一台机器上挂载了多个JuiceFS文件系统,或是在多台机器上使用不同的选项挂载了同一个文件......
  • 快手视频评论区提取工具,抓取评论内容UID用户信息,采集精准关键词,开源版!
    快手评论区里面其实有很多精准的关键词用户,我们可以提取这些关键词用户来实现企业的营销和提取,那么今天我就给大家推荐这么一个软件源码,易语言开发的,用的鱼刺_http模块,和gzip.dll,提取的时候需要用到COOKIE,这个在浏览器开f12刷新,然后选择快手主页,抓包复制cookie就可以了。软件截图......
  • 快手视频评论区用户ID提取工具,可采集UID快手号,评论内容时间,易语言开源版!
    这是之前给某个客户开发的,定制的,可以输入用户的作品连接,然后导入COOKIE后就会自动提取评论区下载的所有用户评论内容用户di,快手号这些信息,用的是鱼刺_http模块,和“gzip.dll”组件,具体源码和界面我下面会开源出来,仅供大家学习。软件界面: 采集效果: 源码分享:==============......
  • elementUI中关于 el-table 表尾合计行列子
    列表中数量和金额需要统计并显示单位:统计后的效果如下:    <el-tablev-loading="loading"border:data="List"@selection-change="handleSelectionChange"show-summary:summary-method="getSummaries&quo......