【问题标题】:C# All forms but Owner sent to back when I hide a ShowDialog form当我隐藏 ShowDialog 表单时,C# 所有表单,但所有者发送到后面
【发布时间】:2016-06-26 18:45:57
【问题描述】:

使用 ShowDialog(this) 显示一个表单。用户关闭它,而不是处置它,我想保留更改并准备好直到下一次打开调用:

        private FormClosing(object sender, FormClosingEventArgs e)
        {
            this.Hide();
            e.Cancel = true;
        }

但是隐藏对话框会导致返回所有其他打开的表单,但所有者除外。使用 Show(this) 而不是 ShowDialog() 可以修复它,但我需要保持它作为对话框打开。

【问题讨论】:

  • 你不需要隐藏它。保留对表单的引用,并在需要时再次显示。
  • 顺便说一句,您不需要该代码。 ShowDialog 不会关闭/处理表单 - 请参阅 Form.ShowDialog
  • 您可以阅读@IvanStoev 也提到的ShowDialogRemarks 部分。

标签: c# forms winforms hide showdialog


【解决方案1】:

你不需要隐藏它。保留对表单的引用并在需要时再次显示:

YourDialogForm f;
private void button1_Click(object sender, EventArgs e)
{
    if(f==null)
        f = new YourDialogForm();

    f.ShowDialog();
}

更多信息:


另外,如果是设置表单,您可以在项目中添加/使用Settings.settings文件并加载和保存设置。这样您就不需要依赖表单状态。这样你就可以bind controls properties to settings properties,然后在关闭表单时调用Properties.Settings.Default.Save();

【讨论】:

  • 谢谢,这解决了问题。您确定垃圾收集器在内存不足的情况下不会在未来某个时间处理它吗?
【解决方案2】:

你需要创建一个类来保存你的状态

public class yourFormState{
 //Assign your properties here        
}


private void Form1_FormClosing(object sender, FormClosingEventArgs e) {
     CreateConfigData();
}

private void CreateConfigData() {
using (StreamWriter sw = new StreamWriter("yourConfig.xml")) {
    state.ButtonBackColor = System.Drawing.ColorTranslator.ToHtml(button1.BackColor);
    XmlSerializer ser = new XmlSerializer(typeof(MyFormState));
    ser.Serialize(sw, state);
}

}

在表单加载时,您可以加载配置并访问数据

  private void Form1_Load(object sender, EventArgs e) {
    if (File.Exists("Yourconfig.xml")) {
    loadConfig();
} //Assign your properties


private void loadConfig() {
XmlSerializer ser = new XmlSerializer(typeof(MyFormState));
using (FileStream fs = File.OpenRead("Yourconfig.xml")) {
    state = (MyFormState)ser.Deserialize(fs);
}

【讨论】:

    猜你喜欢
    • 2015-01-12
    • 2011-04-03
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多