本文介绍如何添加C1Themes到已经存在的WinForms应用程序。C1Themes内置超过25种专业设计的主题,也可以自定义主题,用于应用程序。本文主要介绍了给C1FlexGrid和C1TrueDBGrid设置主题,根据下述步骤,也可以给ComponentOne Studio for WinForms的C1Report,C1Ribbon以及其他控件,添加C1Themes。
1 添加C1ThemeController
首先添加需要更改主题的控件到应用程序中,在本文Demo中,先从工具箱拖拽C1FlexGrid和C1TrueDBGrid到窗体,并且对两个控件进行数据绑定。C1FlexGridDataSource绑定Employees数据表,C1TrueDBGrid绑定EmployeesOrders,数据绑定代码如下:
this.c1TrueDBGrid1.DataSource = this.employeesOrdersBindingSource;
this.c1FlexGrid1.DataSource = this.employeesBindingSource;
然后从工具箱中拖拽C1ThemeController到窗体,会弹出如下编辑框:
可以在给C1FlexGrid、C1TrueDBGrid何窗体设置不同的主题,默认为None。
2 将所有Themes添加到ComboBox
添加标准的ComboBox到窗体,然后在FormLoad的时候,将C1ThemController所有可用的主题都加入到ComboBox的下拉菜单中,方便运行时选择,并设置初始化主题,代码如下:
// populate combobox with all available themes
this.comboBox1.Items.AddRange(C1.Win.C1Themes.C1ThemeController.GetThemes());
// set initial theme
comboBox1.SelectedIndex = 0;
3 设置主题
设置ComboBox的SelectedIndexChanged事件,当打开下拉框选择相应的主题时,调用该事件改变窗体上所有控件的主题,具体代码如下:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
// Set theme on the theme controller:
this.c1ThemeController1.Theme = this.comboBox1.SelectedItem.ToString();
// ...and apply it to all themable controls (this will override any control-specific theme settings):
Action setTheme = null;
setTheme = (c) =>
{
if (C1.Win.C1Themes.C1ThemeController.IsObjectThemeable(c))
this.c1ThemeController1.SetTheme(c, this.c1ThemeController1.Theme);
foreach (Control cc in c.Controls)
setTheme(cc);
};
setTheme(this);
}
}
根据代码,首先将ComboBox下拉菜单中选择的Theme设置给C1ThemeController,然后给所有的窗体上的控件使用该Theme。运行起来的效果如下图所示,可以在ComboBox的下拉菜单里选择不同的Theme设置给窗体上的C1FlexGrid和C1TrueDBGrid。
本文Demo的源代码如下:
关于葡萄城
葡萄城是专业的软件开发技术和低代码平台提供商,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。葡萄城开发技术始于1980年,40余年来始终聚焦软件开发技术,有深厚的技术积累和丰富的产品线。是业界能够同时赋能软件开发和低代码开发的企业。凭借过硬的产品能力、活跃的用户社区和丰富的伙伴生态,与超过3000家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。