我对C#和Windows表格相对较新,请原谅我看似简单的问题。
我有一个Windows应用程序,它有一个对话框,打开时包含带有一些默认值的文本框。这些可以根据用户想要使用的内容进行更改。然后使用此对话框中的值以及主窗体上的内容来创建XML文件。我遇到的问题是,如果我再次打开对话框来更改同一会话中的任何值,原始值就在那里,而不是任何新值。
如何让它保留特定会话中已更改的值?
答案 0 :(得分:1)
如果我正确理解了这个问题,听起来你需要使用背景变量和TextChanged事件(虽然我更喜欢KeyDown事件,而我的代码却使用了它)。例如,让我们调用你的文本框TextBox1。然后,您可以创建一个名为string Temp的全局变量,并按如下方式使用它:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
temp = textBox1.Text;
}
关闭对话框后,您可以在其他地方使用该变量,在您的情况下,您可能希望将其发送到XML。 另一种选择是使用keydown事件来创建一个保留文本值的临时XML文件。这显然在计算上更加昂贵,但除非这将在处理器有限的环境中使用,否则它并不是那么大的交易。 我要提到的最后一件事是,如果您使用多线程并传递该临时值的值,则可能会遇到麻烦。考虑在其他线程上使用变量而不是开始使用它来获取帮助。
答案 1 :(得分:1)
如果要在下次打开对话框时查看用户的值,则需要将这些值保存在某处,然后在下次显示对话框时重新加载它们(通常在Form_Load或Form_Show上) 。当然,您需要在退出之前保存值(可能在Form_Close?中)。
保存这些值的地方取决于您。如果您希望它仅用于该程序的运行,则可以将它们保存在表单类中的某些静态变量中。或者,如果要在下次运行程序时重新加载这些设置,则可以存储在配置文件,注册表,隔离存储等中。
答案 2 :(得分:0)
如果您想保留用户上次使用对话框时输入的值,您需要在某处保留对话框的引用。
此外,如果您在Load事件的对话框中设置了一些数据,它可能会删除用户先前输入的数据。在没有看到你的代码的情况下,我现在无法说清楚。