class MyForm :
Form
{
public MyForm()
{
/* поскипано */
pct_.Paint += pictureBox_Paint;
// не надо, сами разберутся
//Invalidate();
}
protected override void pictureBox_Paint(PaintEventArgs args)
{
Draw(e.Graphics);
}
public void OnClick(object sender, System.EventArgs args)
{
Form2 f = new Form2();
f.ShowDialog();
// не надо. События WM_PAINT будут приходить и так
//Invalidate();
}
public void Draw(Graphics gr)
{
gr.Clear(Color.Red);
/*
//у PaintEventArgs есть Graphics, используйте его здесь, так будет правильнее
Graphics gph = pct_.CreateGraphics();
gph.Clear(Color.Red);
// не надо диспозе. по моему в документации явно про это написано
gph.Dispose();
*/
}
private Button btn_;
private PictureBox pct_;
}
VVA>Подскажите, пожалуйста:
VVA>1) Почему так происходит?
потому что код отвечающий за отрисовку PictureBox и ваш — не связаны друг с другом. Да и вообще не очень кошерно сделано было. То есть теоретических неполадок — много.
VVA>2) Как лечить?
а в каком виде нужен больной? посмотрите комментарии — помогли?