2

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

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

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

4

3 回答 3

1

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

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

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

于 2013-01-28T18:47:40.427 回答
1

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

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

于 2013-01-28T18:49:06.960 回答
0

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

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

于 2013-01-28T18:47:59.093 回答