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
Post a Comment