2014-04-05 2 views
0

그래서 dataGridView가 있으며 셀을 선택하고 색상을 변경할 수 있기를 원합니다. 이것은 우리가 ColorDialog를 사용해야하는 숙제입니다. 상단에있는 ColorDialog를 가져 오는 버튼이 있는데이 버튼을 사용하여 셀의 배경색을 성공적으로 변경할 수 있었지만 특정 셀 (방금 테스트 한 (2,2)) 만 변경할 수있었습니다. 선택한 셀의 색만 변경하고 싶습니다. ColorDialog가 현재 어떤 셀이 선택되었는지 어떻게 알 수 있습니까? 실제 버튼을 클릭에 대한 나의 현재 코드는 이것이다 :ColorDialog를 사용하여 dataGridViewCells의 배경색을 변경하십시오.

private void changeBGColorToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    ColorDialog cd = new ColorDialog(); 
    cd.ShowDialog(); 
    dataGridView1.Rows[2].Cells[2].Style.BackColor = cd.Color; 
} 

내가 (2,2)을 밖으로 테스트하기 전에 내가 그냥 일하러 가야하고, 그 특정 셀을 변경 않습니다 말했듯이. 이 함수가 셀을 실제로 선택했는지 (또는 셀을 선택했는지 여부를) 알 수있는 방법을 알고 싶습니다. 또한 도움이된다면 CellBeginEdit 및 CellEndEdit 함수도 있습니다. 고맙습니다!

답변

0

닫기.

 if (ColorDialog .ShowDialog() == DialogResult.OK) 
      dataGridView1.Rows[2].Cells[2].Style.BackColor = ColorDialog .Color; 

또는 짧은 :

dataGridView1.SelectedCells[0] 

이 실제로 '라고 :

 if (ColorDialog .ShowDialog() == DialogResult.OK) 
      dataGridView1[2][2].Style.BackColor = ColorDialog .Color; 

이 선택한 셀 사용을 참조하려면 먼저 당신이 OK를 확인하기 위해이 구문을 사용하는 것이 좋습니다 첫 번째 선택한 셀 '. 따라서 선택하지 않은 경우에는 다중 선택하거나 선택한 모든 셀의 색상을 변경해야합니다.

는 그래서 하나가

 if (ColorDialog .ShowDialog() == DialogResult.OK) 
      dataGridView1.SelectedCells[0].Style.BackColor = ColorDialog 

또는

 if (ColorDialog .ShowDialog() == DialogResult.OK) 
     { 
      foreach (DataGridViewCell cell in DataGridView1.SelectedCells) 
       cell.Style.BackColor = ColorDialog 
     } 

또한 첫 번째 경우에 당신이 실제로 가 처음 선택한 셀의 셀이 선택되어 있는지, 즉이 있음을 확인해야 할 것이다 첫 번째 장소 또는 참조에서 오류가 발생합니다. dataGridView1.SelectedCells.Length > 0을 확인하십시오. 수표를 어디에 둘 것인지 결정합니다.

관련 문제