Я уже думал об этом. - Srriam Sakthivel
Я хотел спроектировать.
Тем не менее спасибо. :)
Проект загрузки: https://www.mediafire.com/?1nac18vdpdg27x5
Пример изображения: http://s1278.photobucket.com/user/murat34can52/media/datagridviewTransparent_zpstgnkjsb7.png.html
Исходный код
Form1
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace winFormDataGridViewTransparentAndImage
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/*
VB olan bu kodu C# internetteki convert siteleri sayesinde çevirdim
Ancak yeterli olmadı hata alıyordu nedeni bunu Form1.Designer.cs den
itibaren başlayan bir class olayı olduğu için. Nesne oluşturulurken
bizim verdiğimiz özelliklere göre oluşturulması gerekiyordu.
Neyse uzatmadan baya zaman harcadım C# çevirmek ve doğru istenilen
amaca ulaşmak için ama sonunda başarmak önemli adımlarımdan biri oldu.
#Murat Çakmak (Dikey)
*/
private void Form1_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("Columns1");
dt.Columns.Add("Columns2");
dt.Rows.Add("Rows1", "Rows1");
dt.Rows.Add("Rows2", "Rows2");
dataGridView1.DataSource = dt;
dataGridView2.DataSource = dt;
}
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.Size = new Size(0,0);
dataGridView2.Size = new Size(0,0);
dataGridView1.Size = new Size(350, 350);
dataGridView2.Size = new Size(350, 350);
}
}
}
Form1 Дизайнер
namespace winFormDataGridViewTransparentAndImage
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
this.button1 = new System.Windows.Forms.Button();
this.dataGridView2 = new transDataGridView();
this.dataGridView1 = new transDataGridViewAndImage();
((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(13, 397);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 3;
this.button1.Text = "Size++";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// dataGridView2
//
this.dataGridView2.AllowUserToAddRows = false;
this.dataGridView2.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.dataGridView2.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None;
this.dataGridView2.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle1.BackColor = System.Drawing.Color.Transparent;
dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(162)));
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView2.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.dataGridView2.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle2.BackColor = System.Drawing.Color.Transparent;
dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(162)));
dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dataGridView2.DefaultCellStyle = dataGridViewCellStyle2;
this.dataGridView2.DGVHasTransparentBackground = true;
this.dataGridView2.EnableHeadersVisualStyles = false;
this.dataGridView2.Location = new System.Drawing.Point(369, 12);
this.dataGridView2.Name = "dataGridView2";
this.dataGridView2.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle3.BackColor = System.Drawing.Color.Transparent;
dataGridViewCellStyle3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(162)));
dataGridViewCellStyle3.ForeColor = System.Drawing.Color.Transparent;
dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle3.SelectionForeColor = System.Drawing.Color.Red;
dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView2.RowHeadersDefaultCellStyle = dataGridViewCellStyle3;
this.dataGridView2.Size = new System.Drawing.Size(337, 206);
this.dataGridView2.TabIndex = 2;
//
// dataGridView1
//
this.dataGridView1.AllowUserToAddRows = false;
this.dataGridView1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.dataGridView1.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None;
this.dataGridView1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle4.BackColor = System.Drawing.Color.Transparent;
dataGridViewCellStyle4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(162)));
dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle4;
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.DGVHasTransparentBackground = true;
this.dataGridView1.EnableHeadersVisualStyles = false;
this.dataGridView1.Location = new System.Drawing.Point(12, 12);
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle5.BackColor = System.Drawing.Color.Transparent;
dataGridViewCellStyle5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(162)));
dataGridViewCellStyle5.ForeColor = System.Drawing.Color.Transparent;
dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView1.RowHeadersDefaultCellStyle = dataGridViewCellStyle5;
dataGridViewCellStyle6.ForeColor = System.Drawing.Color.Red;
this.dataGridView1.RowsDefaultCellStyle = dataGridViewCellStyle6;
this.dataGridView1.Size = new System.Drawing.Size(304, 206);
this.dataGridView1.TabIndex = 0;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.ClientSize = new System.Drawing.Size(782, 432);
this.Controls.Add(this.button1);
this.Controls.Add(this.dataGridView2);
this.Controls.Add(this.dataGridView1);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
this.ResumeLayout(false);
}
#endregion
private transDataGridViewAndImage dataGridView1;
private transDataGridView dataGridView2;
private System.Windows.Forms.Button button1;
}
}
Прозрачный DataGridView Класс Источник
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
public class transDataGridView : DataGridView
{
// VB Converted To C# And Code Edit : Murat Çakmak
private bool _DGVHasTransparentBackground;
[Category("Transparency"), Description("Select whether the control has a Transparent Background.")]
public bool DGVHasTransparentBackground
{
get { return _DGVHasTransparentBackground; }
set
{
_DGVHasTransparentBackground = value;
if (_DGVHasTransparentBackground)
{
this.SetTransparentProperties(true);
}
else
{
this.SetTransparentProperties(false);
}
}
}
public transDataGridView()
{
DGVHasTransparentBackground = true;
}
private void SetTransparentProperties(bool SetAsTransparent)
{
if (SetAsTransparent)
{
base.DoubleBuffered = true;
base.EnableHeadersVisualStyles = false;
base.ColumnHeadersDefaultCellStyle.BackColor = Color.Transparent;
base.RowHeadersDefaultCellStyle.BackColor = Color.Transparent;
SetCellStyle(Color.Transparent);
}
else
{
base.DoubleBuffered = false;
base.EnableHeadersVisualStyles = true;
base.ColumnHeadersDefaultCellStyle.BackColor = SystemColors.Control;
base.RowHeadersDefaultCellStyle.BackColor = SystemColors.Control;
SetCellStyle(Color.White);
}
}
protected override void PaintBackground(System.Drawing.Graphics graphics, System.Drawing.Rectangle clipBounds, System.Drawing.Rectangle gridBounds)
{
base.PaintBackground(graphics, clipBounds, gridBounds);
if (_DGVHasTransparentBackground)
{
// DataGridView Transparent !
SolidBrush myBrush = new SolidBrush(base.Parent.BackColor); // (Form1 BackColor) veya bir resme boyanabilir.
Region rectDest = new Region(new Rectangle(0, 0, base.Width, base.Height));
graphics.FillRegion(myBrush, rectDest);
}
}
protected override void OnColumnAdded(System.Windows.Forms.DataGridViewColumnEventArgs e)
{
base.OnColumnAdded(e);
if (_DGVHasTransparentBackground)
{
SetCellStyle(Color.Transparent);
}
}
private void SetCellStyle(Color cellColour)
{
foreach (DataGridViewColumn col in base.Columns)
{
col.DefaultCellStyle.BackColor = cellColour;
col.DefaultCellStyle.SelectionBackColor = cellColour; // selection cell color example Color.Red;
}
}
}
Прозрачный DataGridView И İmage Класс Источник
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
public class transDataGridViewAndImage : DataGridView
{
// VB Converted To C# And Code Edit : Murat Çakmak
private bool _DGVHasTransparentBackground;
[Category("Transparency"), Description("Select whether the control has a Transparent Background.")]
public bool DGVHasTransparentBackground
{
get { return _DGVHasTransparentBackground; }
set
{
_DGVHasTransparentBackground = value;
if (_DGVHasTransparentBackground)
{
this.SetTransparentProperties(true);
}
else
{
this.SetTransparentProperties(false);
}
}
}
public transDataGridViewAndImage()
{
DGVHasTransparentBackground = true;
}
private void SetTransparentProperties(bool SetAsTransparent)
{
if (SetAsTransparent)
{
base.DoubleBuffered = true;
base.EnableHeadersVisualStyles = false;
base.ColumnHeadersDefaultCellStyle.BackColor = Color.Transparent;
base.RowHeadersDefaultCellStyle.BackColor = Color.Transparent;
SetCellStyle(Color.Transparent);
}
else
{
base.DoubleBuffered = false;
base.EnableHeadersVisualStyles = true;
base.ColumnHeadersDefaultCellStyle.BackColor = SystemColors.Control;
base.RowHeadersDefaultCellStyle.BackColor = SystemColors.Control;
SetCellStyle(Color.White);
}
}
bool imageLoad = false;
protected override void PaintBackground(System.Drawing.Graphics graphics, System.Drawing.Rectangle clipBounds, System.Drawing.Rectangle gridBounds)
{
base.PaintBackground(graphics, clipBounds, gridBounds);
if (_DGVHasTransparentBackground)
{
// DataGridView İmage Load !
Bitmap b = new Bitmap(winFormDataGridViewTransparentAndImage.Properties.Resources._3d_Hd_Wallpapers);
graphics.DrawImage(b, 0, 0, base.Size.Width, base.Size.Height);
}
}
protected override void OnColumnAdded(System.Windows.Forms.DataGridViewColumnEventArgs e)
{
base.OnColumnAdded(e);
if (_DGVHasTransparentBackground)
{
SetCellStyle(Color.Transparent);
}
}
private void SetCellStyle(Color cellColour)
{
foreach (DataGridViewColumn col in base.Columns)
{
col.DefaultCellStyle.BackColor = cellColour;
col.DefaultCellStyle.SelectionBackColor = cellColour;
}
}
}
использовать преобразователь кода, как этот, например: http://converter.telerik.com/ – Milen