Набор datagrid просматривает предпосылки к прозрачному

Простой метод:

$ VAR="a b c d"
$ set $VAR
$ echo $#
4
5
задан Jason Aller 10 June 2014 в 03:28
поделиться

2 ответа

Я применил это решение для конкретной проблемы (когда сетка содержалась в форме с фоновое изображение) с простыми модификациями, вы можете адаптировать его для создания общей прозрачной сетки, просто спросите, есть ли у родителя фоновое изображение, иначе просто используйте родительский задний цвет, чтобы нарисовать свою сетку, и все.

Вы должны унаследовать от DataGridView и переопределить метод PaintBackground следующим образом:

protected override void PaintBackground(Graphics graphics, Rectangle clipBounds,  Rectangle gridBounds)
  {
    base.PaintBackground(graphics, clipBounds, gridBounds);
    Rectangle rectSource = new Rectangle(this.Location.X, this.Location.Y, this.Width, this.Height);
    Rectangle rectDest = new Rectangle(0, 0, rectSource.Width, rectSource.Height);

    Bitmap b = new Bitmap(Parent.ClientRectangle.Width, Parent.ClientRectangle.Height);
    Graphics.FromImage(b).DrawImage(this.Parent.BackgroundImage, Parent.ClientRectangle);


    graphics.DrawImage(b, rectDest, rectSource, GraphicsUnit.Pixel);
    SetCellsTransparent();
  }


public void SetCellsTransparent()
{
    this.EnableHeadersVisualStyles = false;
    this.ColumnHeadersDefaultCellStyle.BackColor = Color.Transparent;
    this.RowHeadersDefaultCellStyle.BackColor = Color.Transparent;


    foreach (DataGridViewColumn col in this.Columns)
    {
        col.DefaultCellStyle.BackColor = Color.Transparent;
        col.DefaultCellStyle.SelectionBackColor = Color.Transparent;
    }
}
7
ответ дан 14 December 2019 в 08:56
поделиться

Вам нужно сделать все строки и столбцы прозрачными. Более простой способ:

for (int y = 0; y < gridName.Rows[x].Cells.Count; y++)
{
     yourGridName.Rows[x].Cells[y].Style.BackColor =
     System.Drawing.Color.Transparent;
}
-2
ответ дан 14 December 2019 в 08:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: