2014-04-05 38 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

關閉。 首先,我建議你使用這個語法檢查OK:

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

,或者更短:

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

要引用選定的單元格使用此:

dataGridView1.SelectedCells[0] 

這實際上是說'第一個選中的細胞'。所以你應該確保多重選擇是否關閉或者你改變了所有選定單元格的顏色。

因此,這將是要麼

 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。你決定把支票放在哪裏..