Мне нужно рисовать графику на вкладках, которые создаются динамически. И данные, которые я намереваюсь использовать, поступают из класса mainform. Я очень сожалею о том, что избегаю делать еще один урок. Но я не могу начать все сначала, особенно после написания 2k строк кода.
Вот мой класс tabcontrol
partial class grafCizKont : TabControl
{
public grafCizKont()
{
Init();
}
private void Init()
{
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.DoubleBuffer, true);
this.SetStyle(ControlStyles.ResizeRedraw, true);
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
DrawTabPane(e.Graphics);
}
private void DrawTabPane(Graphics yuzey)
{
if (!Visible)
return;
// here we draw our tabs
for (int i = 0; i < 30; i++)
if (pGenClickTut > i)
graphCiz(yuzey,graphDizi, it2, i);
}
}
и мой метод graphCiz, который находится внутри класса mainform.
public static void graphCiz(Graphics yuzey, int[,] graphDizi, int it, int kSayi = 1)
{
int bolum;
yuzey.Clear(Color.Snow);
Pen kalem;
SolidBrush s;
kalem = new Pen(Color.Black, 2.0f);
s = new SolidBrush(Color.Blue);
yuzey.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
yuzey.DrawLine(kalem, 30, 15, 30, 135);
yuzey.DrawLine(kalem, 30, 135, 300, 135);
int orta, sayi;
orta = graphDizi[kSayi,0];
int son = 15 * it;
sayi = graphDizi[kSayi, it];
graphDiziDuzgun[kSayi, it] = minMax(orta, sayi);
if (it > 0)
{
bolum = 15;
int j = 0;
for (int i = 0; i < son; i += bolum)
{
if (i > 0)
{
cizgi(yuzey, 30 + i, graphDiziDuzgun[kSayi, j - 1] , 30 + i + bolum, graphDiziDuzgun[kSayi, j], kSayi) ;
}
if (i == 0)
{
cizgi(yuzey, 30, 135, 30 + bolum, graphDiziDuzgun[kSayi, j], kSayi );
}
j++;
}
}
}
когда я выполняю эту программу. я получил сообщение об ошибке «System.NullReferenceException было обработано». я думаю, что это указывает на юзея, который должен быть графическим объектом. И я понятия не имею, как отнести это к моему tabcontrol. И я не уверен, что делает мой метод onpaint. Я сомневаюсь, что я ясно даю понять, но это все, что я могу сделать. Пожалуйста, дайте мне выход.