Как заставить datagridview автоматически заполнять каждую ячейку кругом при загрузке формы
Я пытаюсь создать программу, которая выглядит как светодиодный дисплей. Я использую DataGridView в форме windows с использованием C#. Моя проблема заключается в том, что я могу получить dataGridView для отображения, но он не будет автоматически заполнять круги в каждой ячейке. Ниже вы увидите метод Dgv_CellPainting, но я не знаю, как и где его реализовать. Может кто-нибудь помочь? Вот весь код до сих пор...
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 TestDataGrid { public partial class Form1 : Form { const int cColWidth = 10; const int cRowHeight = 10; const int cMaxColumn = 96; const int cMaxRow = 16; const int matrixWidth = cColWidth * cMaxColumn + 3; const int matrixHeight = cRowHeight * cMaxRow + 3; DataGridView DGV; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { DGV = new DataGridView(); DGV.Name = "DGV"; DGV.AllowUserToResizeColumns = false; DGV.AllowUserToResizeRows = false; DGV.AllowUserToAddRows = false; DGV.RowHeadersVisible = false; DGV.ColumnHeadersVisible = false; DGV.GridColor = Color.DarkBlue; DGV.DefaultCellStyle.BackColor = Color.AliceBlue; DGV.ScrollBars = ScrollBars.None; DGV.Size = new Size(matrixWidth, matrixHeight); DGV.Location = new Point(0, 0); DGV.ForeColor = Color.Transparent; // add 1536 cells for (int i = 0; i < cMaxColumn; i++) { DataGridViewImageColumn imageCell = new DataGridViewImageColumn(); DGV.Columns.Add(imageCell); DGV.Columns[i].Name = i.ToString(); DGV.Columns[i].Width = cColWidth; DGV.Columns[i].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; } for (int j = 0; j < cMaxRow; j++) { DataGridViewRow row = new DataGridViewRow(); row.Height = cRowHeight; DGV.Rows.Add(row); } Controls.Add(DGV); } private void Dgv_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { Brush Brs = new SolidBrush(Color.Blue); GraphicsExtensions.FillCircle(e.Graphics, Brs, e.CellBounds.Location.X + 5, e.CellBounds.Location.Y + 10, 5); e.Handled = true; } } } I also had to make a separate class for the GraphicsExtensions...here is the code... <pre lang="c#">using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TestDataGrid { public static class GraphicsExtensions { public static void FillCircle(this Graphics g, Brush brush, float centerX, float centerY, float radius) { g.FillEllipse(brush, centerX - radius, centerY - radius, radius + radius, radius + radius); } } }
Что я уже пробовал:
Я пытался реализовать метод Dgv_CellPainting, но я не знаю, что использовать в качестве параметров, и я также не знаю, как его назвать (я имею в виду, нужно ли мне делать что-то вроде DGV.Dgv_CellPainting (),) я надеюсь, что это имеет смысл.