c# - 如何在 C# 中将组合框背景颜色绑定到面板背景颜色
问题描述
所以...我正在尝试用 C#(策划者)编写一个小游戏,我有 4 个不同的面板和 4 个不同的组合框,例如,我希望 Pane1 具有与 ComboBox1 中选择的颜色相同的背景颜色。现在我用列表做了,但我想知道是否有更好/更短的方法来做到这一点。
private void Suggestion_Box_SelectedIndexChanged(object sender, EventArgs e)
{
List<ComboBox> boxes = new List<ComboBox>()
{
Suggestion_Box1,
Suggestion_Box2,
Suggestion_Box3,
Suggestion_Box4
};
var i = 0;
foreach (ComboBox cb in boxes)
{
if (cb.SelectedIndex != -1)
{
cb.BackColor = Color.FromName(All_Colors[cb.SelectedIndex]);
Suggestion_Panel1.BackColor = Suggestion_Box1.BackColor;
Suggestion_Panel2.BackColor = Suggestion_Box2.BackColor;
Suggestion_Panel3.BackColor = Suggestion_Box3.BackColor;
Suggestion_Panel4.BackColor = Suggestion_Box4.BackColor;
}
}
}
“All_Colors”数组是一个字符串数组,其中包含不同的颜色。建议框是组合框,建议面板是面板。
解决方案
我的观点是,当只需要更改 1 时,无需更新所有面板的背景颜色。您可以将每个面板的 BackColor 属性绑定到相应的 ComboBox 的 BackColor 属性。
我的代码:
public partial class Form1 : Form
{
List<string> colors = new List<string> { "red", "blue", "green", "yellow" };
public Form1()
{
InitializeComponent();
// binding here
this.panel1.DataBindings.Add("BackColor", this.comboBox1, "BackColor");
this.panel2.DataBindings.Add("BackColor", this.comboBox2, "BackColor");
this.panel3.DataBindings.Add("BackColor", this.comboBox3, "BackColor");
this.panel4.DataBindings.Add("BackColor", this.comboBox4, "BackColor");
}
private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
var comboBox = sender as ComboBox;
if(comboBox.SelectedIndex < 0)
return;
comboBox.BackColor = Color.FromName(colors[comboBox.SelectedIndex]);
}
}
推荐阅读
- linux - 链接时ssl版本冲突
- python - 熊猫分配和复制
- python - 不可散列的类型:'list' - 出了什么问题?
- sql - 不断收到 Oracle ORA-00907:缺少右括号
- python - Pip install pyaudio 无法在 Windows 上运行也尝试使用 vs
- lua - lua中的字符串匹配和小写字符
- r - R 中的 `na.string = na.strings=c('',' ')` 引入了一个新的不需要的因子级别 NA
- apache-flink - Flink 水印生成
- azure - SSIS 目录:无法编译包中包含的脚本
- python - 如何用另一个字符替换字符串特定位置的字符