[英]Using WinForms ColorDialog in WPF is giving error: 'Color' parameter type is not valid for formatting property 'Background'
[英]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.