如何使用c#在图片框中重置为默认背景色

本文关键字:默认 背景色 何使用 | 更新日期: 2023-09-27 18:05:59

我需要你的帮助。我在c#, Winforms中使用图片框创建了一个钢琴。在图片框的属性中,我已经将背景色设置为适当的注释(白色和黑色注释)。

我创建了一个组合框,所以我可以选择和弦,如C和弦,D和弦…在这个链接中,你可以看到C和弦的正确音符。

钢琴c和弦

当我选择一个和弦(如C和弦)时,适当音符的背景色变为红色,但是当我在组合框中选择另一个和弦时,前面选择的和弦会保持红色。

所以我的问题是,无论如何我可以设置回默认设置的背景色或破坏以前的行为,当我在组合框中选择别的东西,或者我需要使用别的东西除了图片框??

这是我的代码:

private void comboBox_selectNote_SelectedIndexChanged(object sender, EventArgs e)
    {
        switch (comboBox_selectNote.SelectedIndex)
        {
            case 0: //C
                //RED
                pbC1.BackColor = Color.Red;
                pbE1.BackColor = Color.Red;
                pbG1.BackColor = Color.Red;
                break;
            case 1: //C#
                //RED
                pbCsharp1.BackColor = Color.Red;
                pbF1.BackColor = Color.Red;
                pbGsharp1.BackColor = Color.Red;
                break;

我需要你的帮助,我已经尝试了一些东西,但它没有工作

如何使用c#在图片框中重置为默认背景色

您必须将其他PictureBox -es的BackColor重新分配为原始颜色。例如,您可以创建一个存储原始颜色的Color - s数组,然后将这些颜色复制到您想要重置的PictureBox - s中。一些代码:

// assumes you have NUM_KEYS piano keys / PictureBoxes
Color[] pianoKeyColors = new Color[NUM_KEYS];
// fill the pianoKeyColors array with the colors you want,
// perhaps alternating white-black-white- ...
// you may want to do that in the constructor for your Form
// you should also store the PictureBox-es in an array, so you can easily
// reference the one you want
private void comboBox_selectNote_SelectedIndexChanged(object sender, EventArgs e)
{
    // reset all PictureBox-es to the original colors
    for (int key = 0; key < NUM_KEYS; key++)
        pianoKeys[key].BackColor = pianoKeyColors[key];
    // and then only set the BackColor to Red of keys in the chord
    switch (comboBox_selectNode.SelectedIndex)
    {
        case 0: // C chord
            pianoKeys[KEY_C1].BackColor = Color.Red;
            pianoKeys[KEY_E1].BackColor = Color.Red;
            pianoKeys[KEY_G1].BackColor = Color.Red
            break;
        ... and the other cases ...
    }
}