Я слежу за этим SO post , чтобы передать DataGridView во вторую форму, чтобы я мог получить доступ к ячейкам, чтобы нарисовать их на основе значений ..
В Form1 я создаю этот DataGridView как показано ниже:
namespace LightnessComparision
{
public partial class Form1 : Form
{
public DataGridView dgv = new DataGridView
{
Name = "LightnessGrid",
Visible = true,
DataSource = null,
AutoSize = true,
RowHeadersVisible = false,
ColumnHeadersVisible = false,
ScrollBars = ScrollBars.Both,
AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCellsExceptHeader,
};
/* Public Form1 etc */
public void Button3_Click(object sender, EventArgs e)
{
/* SOME LOGIC */
LightnessTable LightnessForm = new LightnessTable();
dgv.DataSource = resulTable;
LightnessForm.dgv = dgv;
LightnessForm.Controls.Add(dgv);
LightnessForm.AutoSize = true;
LightnessForm.Show();
}
}
}
LightnessTable, представляющий собой форму, выглядит следующим образом:
namespace LightnessComparision
{
public partial class LightnessTable : Form
{
public DataGridView dgv { get; set; }
public LightnessTable()
{
InitializeComponent();
DataGridView_Configuration();
}
private void DataGridView_Configuration()
{
dgv.VisibleChanged += DgView_VisibleChanged;
}
private void DgView_VisibleChanged(object sender, EventArgs e)
{
DataGridView_PaintCells();
}
private void DataGridView_PaintCells()
{
foreach (DataGridViewRow row in dgv.Rows)
{
foreach (DataGridViewCell cell in row.Cells)
{
if (Convert.ToInt16(cell.Value) < -5)
{
cell.Style.BackColor = Color.Yellow;
}
if (Convert.ToInt16(cell.Value) > 5)
{
cell.Style.BackColor = Color.Black;
}
}
}
}
}
}
Однако dgv.VisibleChanged + = DgView_VisibleChanged; эта строка выдает ошибку, что dgv имеет значение null.
Что здесь не так?