c# - pictureBox, graphics and messageBox -
i have problem these elements. try draw line graphics , put on picturebox. call messagebox , runs in of mainwindow. of cause can't use mainwindow because program wait clicking buttons of mesagebox. don't see it. button alt helps me only, or alt+tab, stupid. so, code:
public partial class form1 : form { graphics g; bitmap btm;
    public form1()     {         initializecomponent();     }      private void form1_load(object sender, eventargs e)     {         btm = new bitmap(picturebox1.size.width, picturebox1.size.height);         g = creategraphics();         g = graphics.fromimage(btm);         pen p = new pen(brushes.red);         g.drawline(p, 0, 0, btm.size.width, btm.size.height);                     picturebox1.refresh();         g.dispose();     }      protected override void onclosing(canceleventargs e)     {         dialogresult dr = messagebox.show("exit?", "exit", messageboxbuttons.yesno);         if (dr == dialogresult.no) e.cancel = true; else e.cancel = false;     }      private void picturebox1_paint(object sender, painteventargs e)     {         picturebox1.image = btm;     } }   tell me, problem? thanks
when form refreshed, paint event called. avoid custom drawing @ point setting flag.
bool updatepicturebox = true;  private void picturebox1_paint(object sender, painteventargs e) {     if(updatepicturebox)         picturebox1.image = btm; }  protected override void onclosing(canceleventargs e) {     updatepicturebox = false;     dialogresult dr = messagebox.show(this,"exit?", "exit", messageboxbuttons.yesno);     if (dr == dialogresult.no) e.cancel = true; else e.cancel = false; }   however, can avoid entire issue drawing within paint event itself. suggest doing instead of using flag method above.
private void picturebox1_paint(object sender, painteventargs e) {     var g = e.graphics;                 using (pen p = new pen(brushes.red))     {         g.drawline(p, 0, 0, picturebox1.width, picturebox1.height);     } }      
Comments
Post a Comment