Ok, so a Windows Forms class, WindowSettings, and the form has a “Cancel”-button. When the user clicks the button, the dialog DialogSettingsCancel will pop-up up and ask the user if he is sure he wants to perform the action. The dialog has 2 buttons, a “Yes”-button and a “No”-button. If the user clicks the “Yes”-button, I want both DialogSettingsCancel and WindowSettings to be closed.
My button_Click event handler in DialogSettingsCancel:
private void button1_Click(object sender, EventArgs e)
{
//Code to trigger when the "Yes"-button is pressed.
WindowSettings settings = new WindowSettings();
this.Close();
settings.Close();
}
When I run my application, and go to the settings form, and click the “Cancel”-button, and then click the “Yes”-button, only DialogSettingsCancel closes without closing WindowSettings.
Why won’t it work?
I’ve also tried changing
this.Close();
settings.Close();
to
settings.Close();
this.Close();
But still the same result.
You need the actual instance of the
WindowSettingsthat’s open, not a new one.Currently, you are creating a new instance of
WindowSettingsand callingCloseon that. That doesn’t do anything because that new instance never has been shown.Instead, when showing
DialogSettingsCancelset the current instance ofWindowSettingsas the parent.Something like this:
In
WindowSettings:In
DialogSettingsCancel:This approach takes into account, that a
DialogSettingsCancelcould potentially be opened without aWindowsSettingsas parent.If the two are always connected, you should instead use a constructor parameter:
In
WindowSettings:In
DialogSettingsCancel: