使用 ColorDialog 更改 dataGridViewCells 的背景颜色

本文关键字:背景 颜色 dataGridViewCells ColorDialog 更改 使用 | 更新日期: 2023-09-27 17:56:50

所以我有一个dataGridView,我希望能够选择一个单元格并更改其颜色。 这是一个家庭作业,我们需要使用颜色对话框。 我在顶部有一个按钮,可以弹出一个 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函数。 谢谢!

使用 ColorDialog 更改 dataGridViewCells 的背景颜色

关闭。首先,我建议您使用此语法来检查是否正常:

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