基本上,我做了一个基本的笔记应用程序,并希望添加不同的颜色选项,例如,一个光明的版本和黑暗的版本,更容易由用户查看.我计划给给予它给几个朋友,但没有人可以同意的颜色,所以我想我只是让它可定制的用户通过小按钮.我不是很有经验,但是,我想知道我会如何去做这件事?
svujldwt1#
你可以循环浏览所有的控件并改变它们的颜色。BackColor:
private void ChangeTheme_btn_Click(object sender, EventArgs e) { ChangeTheme(this.Controls, Color.Aqua); } private void ChangeTheme(Control.ControlCollection controls, Color color) { foreach (Control control in controls) { if (control.HasChildren) { // Recursively loop through the child controls ChangeTheme(control.Controls, color); } else { if (control is TextBox textBox) { textBox.BackColor = color; } else if (control is Button button) { button.BackColor = color; } } } }
字符串您可以为每种类型的控件设置单独的颜色,还可以更改其他属性。
如果您有多个表单,您可以执行以下操作:
private readonly List<Control> listOfAllFormControls = new List<Control>(); private void MyForm1_form_Load(object sender, EventArgs e) { // Add all the controls to the list foreach (Control item in MyForm1.instance.Controls) { listOfAllFormControls.Add(item); } foreach (Control item in MyForm2.instance.Controls) { listOfAllFormControls.Add(item); } } private void ChangeTheme_btn_Click(object sender, EventArgs e) { SetColorThemeToLight(listOfAllFormControls); } private void SetColorThemeToLight(List<Control> list) { foreach (Control control in list) { if (control.HasChildren) { // Recursively loop through the child controls List<Control> controlList = new List<Control>(); foreach (Control item in control.Controls) { controlList.Add(item); } SetColorThemeToLight(controlList); } else { switch (control) { case TextBox textBox: textBox.BackColor = Color.Blue; break; case Button button: button.BackColor = Color.Blue; break; } } } }
型我也用了switch case代替
switch case
1条答案
按热度按时间svujldwt1#
你可以循环浏览所有的控件并改变它们的颜色。BackColor:
字符串
您可以为每种类型的控件设置单独的颜色,还可以更改其他属性。
如果您有多个表单,您可以执行以下操作:
型
我也用了
switch case
代替