主窗体修改主题样式时,同时修改子窗体的主题样式
系统展示效果:
一、项目结构
二、代码分析
SetAllFormStyle 界面对象参数
/// <summary> /// 编写:yj /// 日期:2014-08-14 /// 描述:系统界面参数 /// </summary> public class SetAllFormStyle: System.EventArgs { public C1.Win.C1Ribbon.VisualStyle autoStyle { get; set; } }
CommonStyle 全部公共对象
/// <summary> /// 编写:yj /// 日期:2014-08-14 /// 功能:公共静态事件 /// </summary> public static class CommonStyle { public static C1.Win.C1Ribbon.VisualStyle AllFormSytle = C1.Win.C1Ribbon.VisualStyle.Office2007Blue; public static event EventHandler<SetAllFormStyle> RFIDReaderClick; public static void OnRFIDReaderClick(object sender, SetAllFormStyle e) { if (RFIDReaderClick != null) { RFIDReaderClick(sender, e); } } }
BaseForm.cs 基类文件
private void BaseFrom_Load(object sender, EventArgs e) { CommonStyle.RFIDReaderClick += new EventHandler<SetAllFormStyle>(CommonStyle_RFIDReaderClick); } void CommonStyle_RFIDReaderClick(object sender, SetAllFormStyle e) { this.VisualStyle = e.autoStyle; }
说明:在load方法中,注册公共事件。
Form1.cs为设置窗体样式窗体
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { if (comboBox1.Text == "Office2010Blue") { this.VisualStyle = C1.Win.C1Ribbon.VisualStyle.Office2010Blue; } else if (comboBox1.Text == "Office2010Silver") { this.VisualStyle = C1.Win.C1Ribbon.VisualStyle.Office2010Silver; } else if (comboBox1.Text == "Office2010Black") { this.VisualStyle = C1.Win.C1Ribbon.VisualStyle.Office2010Black; } else if (comboBox1.Text == "Office2007Blue") { this.VisualStyle = C1.Win.C1Ribbon.VisualStyle.Office2007Blue; } SetAllFormStyle safs = new SetAllFormStyle(); safs.autoStyle = this.VisualStyle; CommonStyle.OnRFIDReaderClick(sender, safs); }
From2,Form3所有窗体都继承BaseForm,这样就可以实现,修改Form1的主题时,所有窗体的主题样式都改变了。