【问题标题】:Retain values in dialog box after closing - windows forms c#关闭后保留对话框中的值 - windows窗体c#
【发布时间】:2013-01-12 04:21:12
【问题描述】:

我对 C# 和 Windows 窗体还比较陌生,所以请原谅我这个看似简单的问题。

我有一个 Windows 应用程序,它有一个对话框,打开时包含带有一些默认值的文本框。这些可以根据用户想要使用的内容进行更改。然后使用此对话框中的值以及主窗体上的内容来创建 XML 文件。我遇到的问题是,如果我再次打开对话框以更改同一会话中的任何值,则原始值在那里,而不是任何新值。

如何让它保留在特定会话中更改的值?

【问题讨论】:

  • 我不知道你想做什么,你想保留用户第一次打开对话框时更改的值吗?
  • 对于这样的问题,您确实必须附上您的代码。即使在 SO 上,我们也无法读心。
  • 每次显示对话框时都创建一个新实例吗?
  • 在没有看到任何代码的情况下向 OP 提出任何问题都是零意义的,这只会是有根据的猜测
  • 是的,我想保留用户第一次打开对话框时更改的值。我在家没有代码,我想我会问一些线索,因为它困扰着我!

标签: c# windows forms dialog


【解决方案1】:

如果我正确理解了这个问题,听起来您需要使用背景变量和 TextChanged 事件(尽管我更喜欢 KeyDown 事件,而我的代码使用了它)。例如,让我们将您的文本框称为 TextBox1。然后,您可以创建一个名为 string Temp 的全局变量并像这样使用它:

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    temp = textBox1.Text;
}

一旦您的对话框关闭,您就可以在其他地方使用该变量,在您的情况下,听起来您想将其发送到 XML。 另一种选择是使用 keydown 事件来拥有一个临时 XML 文件,该文件保留您的文本的值。这显然在计算上更昂贵,但它并不是什么大不了的事,除非这将在处理器受限的环境中使用。 我要提到的最后一件事是,如果您使用多线程并传递该临时值的值,您可能会遇到麻烦。研究在其他线程上使用变量而不是您开始寻求帮助。

【讨论】:

  • 当用户按下取消而不是确定时你会怎么做?您将覆盖用户选择保留的旧设置。当用户按下 Ok 时,从对话框中收集设置会更容易。它需要更少的处理,更容易编码,并且不会在用户按下取消时中断。
  • 我同意在使用程序的其他方面之前必须关闭对话框,但情况并非总是如此。如果需要,您可以使用 OK 按钮提交更改,但根据我的个人经验,我在程序中将文本框与其他活动控件一起使用,这就是我使用 keydown 事件的原因。但对每个人来说都是他们自己的。
【解决方案2】:

如果您想保留用户上次使用您的对话框时输入的值,您需要在某处保留对您的对话框的引用。

此外,如果您在 Load 事件的对话框中设置一些数据,它可能会删除用户之前输入的数据。在没有看到你的代码的情况下,我现在无法提供更多信息。

【讨论】:

    【解决方案3】:

    如果您想在下次打开对话框时查看用户的值,则需要将这些值保存在某处,然后在下次显示对话框时重新加载它们(通常在 Form_Load 或 Form_Show 上) .当然,您需要在退出之前保存这些值(可能在 Form_Close 中?)。

    将这些值保存在何处由您决定。如果您希望它仅用于程序的运行,您可以将它们保存在表单类中的一些静态变量中。或者,如果您想在下次运行程序时重新加载这些设置,您可以将这些设置存储在配置文件、注册表、隔离存储等中。

    【讨论】:

    • 感谢您的帮助,我已将值保存在表单关闭事件中的公共静态字符串中,然后重新加载表单加载中的值。
    猜你喜欢
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 2012-05-12
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    相关资源
    最近更新 更多