【问题标题】:Changing Background color of dataGridViewCells with a ColorDialog使用 ColorDialog 更改 dataGridViewCells 的背景颜色
【发布时间】:2014-05-17 12:26:20
【问题描述】:

所以我有一个 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 函数。谢谢!

【问题讨论】:

    标签: c# datagridview cells colordialog


    【解决方案1】:

    关闭。 首先我建议你使用这个语法来检查是否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。你决定把支票放在哪里..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-10
      • 2013-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      • 2013-08-08
      相关资源
      最近更新 更多