2013-03-25 1 views
-1

당신의 도움이 필요합니다. 나는 C#, Winforms에서 pictureboxes를 사용하여 피아노를 만들었습니다. pictureboxes의 속성에서 나는 적절한 노트 (흰색과 검은 색 노트)에 backcolor를 설정했습니다.C#을 사용하여 picturebox의 기본 배경색으로 재설정하는 방법?

그리고 C 코드, D 코드와 같은 코드를 선택할 수 있도록 콤보 상자를 만들었습니다.이 링크에서 C 코드에 맞는 노트를 볼 수 있습니다. 내가 콤보 상자이었다 이전 코드에서 다른 코드를 선택하면

c chord for piano

내가 (C 화음처럼) 하나 개의 코드를 선택, 빨간색에 해당 메모 변화의 배경색은,하지만 문제가있는 것입니다 선택된 빨간색으로 유지됩니다.

내 질문에 어쨌든 내가 배경색을 기본 설정으로 되돌릴 수 있습니까 또는 내가 콤보 상자에서 다른 것을 선택할 때 이전 동작을 파괴하거나 picturebox 외에 다른 것을 사용해야합니까 ???

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; 

.....

난 당신의 도움이 필요하세요, 이미 뭔가를 시도했지만 작동하지 않았다 :

이 내 코드입니다.

+0

WinForms 또는 WPF입니까? – feralin

+0

@feralin 그것의 winforms –

+0

괜찮아. 내 대답을 아직 시도 했니? – feralin

답변

3

다른 PictureBox -es의 BackColor을 원래 색상으로 다시 지정해야합니다. 예를 들어 원래 색을 저장하는 Color 배열을 만든 다음 재설정 할 색을 PictureBox -es로 복사 할 수 있습니다. 일부 코드 :

// 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 ... 
    } 
} 
+0

감사합니다 ... 나는 C#에서 배웠고 일했지만 조금 잊어 버렸습니다. :) –

+0

@IvoKuzmanic 괜찮습니다. 그냥 계속 배우고 재미있게 놀아주세요 :) – feralin

관련 문제