我构建了一个 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/