C# 使用ColorDialog更改dataGridViewCells的背景色

C# 使用ColorDialog更改dataGridViewCells的背景色,c#,datagridview,cells,colordialog,C#,Datagridview,Cells,Colordialog,所以我有一个dataGridView,我希望能够选择一个单元格并更改其颜色。这是一项家庭作业,要求我们使用彩色对话框。我在顶部有一个按钮,可以打开一个可供选择的颜色对话框,我已经能够使用它成功地更改单元格的背景颜色,但只更改了一个特定的单元格(刚刚测试过(2,2))。我希望它只更改选定单元格的颜色。如何让ColorDialog知道当前选择了哪个单元格?我当前单击实际按钮的代码如下: private void changeBGColorToolStripMenuItem_Click(object

所以我有一个dataGridView,我希望能够选择一个单元格并更改其颜色。这是一项家庭作业,要求我们使用彩色对话框。我在顶部有一个按钮,可以打开一个可供选择的颜色对话框,我已经能够使用它成功地更改单元格的背景颜色,但只更改了一个特定的单元格(刚刚测试过(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]
这实际上表示“第一个选定的单元格”。因此,您应该确保禁用“multiselect”或更改所有选定单元格的颜色

所以它要么是

        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
。你决定把支票放在哪里