c# - 如何保存表单的状态?

标签 c# .net windows winforms button

我构建了一个 Windows 窗体应用程序,其中包含一些窗体。我想在某种形式上创建一个按钮来保存它的状态。

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

最佳答案

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

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

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
    }
}

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

关于c# - 如何保存表单的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23236101/

相关文章:

c# - Rhino Mocks AAA 语法和线程安全

c# - Visual Studio 2008 - 为什么 vshost.exe 的完整路径限制为 126 个字符?

.net - 为什么我的 .NET Windows 服务有时不会自动启动?

c# - LINQ 代码中的异步 - 说明?

c# - Windows 7时区规则是否存在缺陷

c# - 带解析器的自动映射器抛出 "Error mapping types"

c# - 使用 MVVM (C# WPF) 如何在应用程序初始化时将设置显示到它们各自的控件中?

c# - 从 XML 生成 C# 类

c++ - rand_r 不在范围内,gcc mingw 在 Windows 上的 cygwin 下

Windows 批处理文件 : . bat vs .cmd?