我创建了一个带有按钮列的dgv,想在单击时更改按钮单元格的颜色(让我们说从绿色到红色)。然而,当我将鼠标指针悬停在一个单元格上时,它会将其背景颜色更改为透明(匹配bg颜色的网格),并点击它改变它的颜色为第三个。按钮的flatstyle设置为flat,所有DefaultGridStyle颜色的选项都设置为绿色。2如何防止按钮单元格的颜色在鼠标悬停和单击时改变颜色?
我尝试重新定义CellMouseEnter和CellMouseDown事件:
private void dgv_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor;
}
private void dgv_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor;
}
字符串
但是,拾取不同的颜色会更改单元格的边框颜色,而背景颜色保持透明。
1条答案
按热度按时间jogvjijk1#
您的代码(以及它下面的附加注解)表明您希望在
CellMouseDown
上更改颜色。似乎阻止这种情况发生的原因是单元格在“单击的那一刻”变为选中。因此,如果您不 * 也 * 更改cell.Style.SelectionBackColor
,那么它可能不会按照您希望的方式运行。当我测试它时,这个小小的改变似乎使它像你描述的那样工作。的数据
在这里,当鼠标进入按下状态时,此方法不仅设置
cell.Style.SelectionBackColor
,还将其稍微清洗以获得一些视觉反馈。字符串
当鼠标重新抬起时,拉动真实的
Style.BackColor
并将其转移到Style.SelectionBackColor
。型
我应该提到,我将此列设置为
ReadOnly
,因为多次单击鼠标将进入Edit
模式,否则您可能会遇到新的问题。