使用ColorDialog更改dataGridViewCells的背景颜色

时间:2014-04-05 01:30:06

标签: c# datagridview cells 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)只是为了让它工作,它确实改变了那个特定的细胞。我只是想知道如何让这个函数知道我实际选择的WHICH单元格(或者我是否选择了一个单元格!)。如果有帮助,我还有一个CellBeginEdit和CellEndEdit函数。谢谢!

1 个答案:

答案 0 :(得分:0)

关闭。 首先,我建议您使用此语法检查确定:

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