向用户显示在DataGridView的单元格中选择多种颜色

时间:2017-04-20 07:27:02

标签: c# winforms datagridview background-color

我有两个DataGridView,第一个包含用户列表,另一个包含颜色。

首先DataGridView用户

The First DataGridView

第二个DataGridView颜色

DataGridView that contains colors

通过从第一个DataGridView中选择一个单元格,该程序允许您将颜色与用户相关联。 使用鼠标右键并选择颜色进行关联。

选择后,使用BackGroundColor属性,用户的单元格将变为所选颜色的颜色。

问题

现在的问题是我必须允许用户将多种颜色与用户相关联,那么我如何可视化该单元格已与多种颜色相关联?

您对如何实现这一目标有任何想法吗?不幸的是,您无法在Cell中关联更多颜色,您唯一能做的就是使用渐变,但这对我来说无关紧要。

1 个答案:

答案 0 :(得分:1)

您可以通过访问' CellPainting'来实现此目的。 DataGridView上的事件。

    private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
    {
        var temp = sender as DataGridView;

        if (temp.ColumnCount > 0 && temp.RowCount > 0)
        {
            // get the first cell at (0, 0)
            var cellposition = dataGridView1.GetCellDisplayRectangle(0, 0, false);
            var xStart = cellposition.X;
            var yStart = cellposition.Y;
            var xEnd = xStart + cellposition.Width / 2;
            var yEnd = yStart + cellposition.Height;
            for (int i = yStart; i < yEnd; ++i)
            {
                e.Graphics.DrawLine(new Pen(Color.Black, 1), new Point(xStart, i), new Point(xEnd, i));
            }
        }
    }

此示例代码显示如何在Cell 1上绘制(即第0列,第0行),您可以使用此示例扩展到更多单元格。