c# - Enabling button from another form -


i trying listen formclosed event form strangely not working.

ribbon1.cs

public partial class ribbon1 {     public static token token;     private loginform loginform;      private void ribbon1_load(object sender, ribbonuieventargs e)     {         token = new token();         loginform = new loginform();         loginform.formclosedeventlistener += new loginform.loginformevent(loginform_closed);         loginbutton.enabled = true;     }      void loginform_closed()     {         this.loginbutton.enabled = true;     }      private void testbtn_click(object sender, ribboncontroleventargs e)     {          this.loginbutton.enabled = true;     }      private void loginbutton_click(object sender, ribboncontroleventargs e)     {         loginform.showdialog();         this.loginbutton.enabled = false;     } 

loginform.cs

    public delegate void loginformevent();      public event loginformevent formclosedeventlistener;       public loginform()     {         initializecomponent();         this.formclosed += new formclosedeventhandler(loginform_closed);     }      private void loginform_closed(object sender, formclosedeventargs e)     {         formclosedeventlistener();     } 

it strange because cannot enable loginbutton ribbon1.cs listening loginform_closed event.; however, can close clicking testbtn in same ribbon.cs. if targetting different instance of ribbon1.cs don't create new instance anywhere. doing wrong here?

when take @ documentation of showdialog says:

opens window , returns when newly opened window closed.

that means second line in loginbutton_click executed when loginform closed.

private void loginbutton_click(object sender, ribboncontroleventargs e) {     loginform.showdialog();     this.loginbutton.enabled = false; } 

so when form closed , registered formclosedeventlistener event kicks in enable button, disabled after wards execution of second line

solution: try show method. non-blocking :

private void loginbutton_click(object sender, ribboncontroleventargs e) {     loginform.show();     this.loginbutton.enabled = false; } 

edit:

i have use showdialog() because want block accessibility other forms

then disable button first , call showdialog. switch lines:

private void loginbutton_click(object sender, ribboncontroleventargs e) {     this.loginbutton.enabled = false;     loginform.showdialog(); } 

Comments

Popular posts from this blog

Sort a complex associative array in PHP -

vb.net - How to ignore if a cell is empty nothing -

recursion - Can every recursive algorithm be improved with dynamic programming? -