【问题标题】:How to save the state of a form?如何保存表单的状态?
【发布时间】:2014-06-07 19:15:23
【问题描述】:

我已经构建了一个包含一些表单的 Windows 表单应用程序。我想在某个表单上创建一个按钮来保存其状态。

例如,如果我有一个文本框,用户在其中输入“Hello”并按下保存按钮,当他返回此表单时,文本框仍会显示“Hello”。我希望它仅在程序的同一执行中发生,这意味着当程序关闭并重新打开时,文本框不会再说“你好”(这就是我相信设置不符合我的需要的原因,因为它们保持执行之间的变化)。

【问题讨论】:

  • 你可以只隐藏你的表单而不是关闭它;然后再次show from 而不是re-creating
  • 当表单关闭时,保存其状态,当打开/创建时,恢复。什么是问题?你不知道如何创建变量? =D

标签: c# .net windows winforms button


【解决方案1】:

由于您只希望表单在应用程序运行时保持其状态,因此解决方案非常简单:永远不要关闭表单,只需将其隐藏即可。当你准备好再次展示它时,展示它。它会重新出现在屏幕上,一切都和原来一样。 (当然,除非您循环访问控件并重置它们的属性。)

在最简单的情况下,您可以通过将调用 this.Close 替换为 this.Hide 来完成此操作。但它可能比这更复杂,因为用户可以用大红色 X 关闭您的表单。为了确保所有关闭表单的尝试都被悄悄地重新路由,因为隐藏表单的请求需要一些小技巧:

private void MyForm_FormClosing(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason == CloseReason.UserClosing)
    {
        e.Cancel = true;  // cancel the request to close
        this.Hide();      // hide the form instead
    }
}

请注意,此代码会检查关闭原因并确保它是用户发起的关闭请求。这个非常重要。如果省略这部分,也无法以编程方式关闭表单!

【讨论】:

【解决方案2】:

将您的数据存储在静态变量中,它们将一直存在,直到您关闭程序。

static string textboxText = textbox1.text;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多