繁体   English   中英

使用ColorDialog更改dataGridViewCells的背景颜色

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM