![](/img/trans.png)
[英]Using WinForms ColorDialog in WPF is giving error: 'Color' parameter type is not valid for formatting property 'Background'
[英]Changing Background color of dataGridViewCells with a ColorDialog
所以我有一個dataGridView,我希望能夠選擇一個單元格並更改其顏色。 這是一項家庭作業,要求我們使用ColorDialog。 我在頂部有一個按鈕,它彈出一個ColorDialog可供選擇,並且我已經能夠成功地使用它來更改單元格的背景顏色,但是只能更改特定的單元格(剛剛測試(2,2))。 我希望它僅更改所選單元格的顏色。 如何讓ColorDialog知道當前選擇了哪個單元格? 我當前用於單擊實際按鈕的代碼是這樣的:
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函數。 謝謝!
關。 首先,我建議您使用以下語法檢查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
。 您決定將支票放在哪里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.