diff --git a/mRemoteNG/UI/Window/OptionsWindow.cs b/mRemoteNG/UI/Window/OptionsWindow.cs index e8f4411a..6b07a754 100644 --- a/mRemoteNG/UI/Window/OptionsWindow.cs +++ b/mRemoteNG/UI/Window/OptionsWindow.cs @@ -77,15 +77,22 @@ namespace mRemoteNG.UI.Window protected override void OnFormClosing(FormClosingEventArgs e) { - // Detach the FrmOptions form so it can be reused - if (_optionsForm != null) - { - _optionsForm.VisibleChanged -= OptionsForm_VisibleChanged; - Controls.Remove(_optionsForm); - } + // With HideOnClose = true, we don't dispose the window + // so we keep the embedded form in Controls for reuse base.OnFormClosing(e); } + protected override void OnVisibleChanged(EventArgs e) + { + base.OnVisibleChanged(e); + + // When the window becomes visible, ensure the embedded form is also shown + if (Visible && _optionsForm != null && !_optionsForm.Visible) + { + _optionsForm.Show(); + } + } + public void SetActivatedPage(string pageName) { _optionsForm?.SetActivatedPage(pageName); @@ -100,6 +107,7 @@ namespace mRemoteNG.UI.Window // OptionsWindow // ClientSize = new System.Drawing.Size(800, 600); + HideOnClose = true; Name = "OptionsWindow"; Text = Language.Options; TabText = Language.Options;