所以我有一个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函数。谢谢!
答案 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
。你决定把支票放在哪里..