2010-02-28 78 views
4

我在创建一个计算器类型程序。保存文本框的默认值c#

我有一个文本框,用户可以更改它的值。该文本框用于一些计算中。

如何保存文本框的值,以便下次打开文本框时保存该值。

例如,文本框的默认值是1.5。用户将其更改为5,然后关闭表单。下一次用户打开窗体的文本框中默认值是5,现在没有1.5

任何帮助,将不胜感激林新在这个

回答

0

您可以将数据存储在数据源,例如:

  1. 文本文件
  2. XML文件
  3. 数据库

在Form_Load方法,你可以retreive该值,并将其设置在文本框中。假设您将其写入文本文件,代码将为:

StreamReader re = File.OpenText("MyData.txt"); 
string input = null; 
input = re.ReadLine(); 
txtFormData.Text = input; 
re.close; 
+0

我在哪里可以把这个它是在窗体加载或在用户更改值? – Christina 2010-02-28 15:08:25

+0

将它放在表单加载中。在应用程序结束时,您还需要将文本框的值写入文本文件。 http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=132。 – Bhaskar 2010-03-02 06:50:19

0

更好的方法是将文本框绑定到数据源。根据您的要求,数据源可以是任何东西。对于例如,如果你喜欢一个XML文件

这里是如何工作的使用示例XML文件,values.xml

<Values> 
<default>1.5</default> 
. 
. 
</Values> 

这里是如何将文本框绑定到默认值

string xml = @"<Values><default>1.5</default></Values>"; 

    XElement x = XElement.Parse(xml); 
    var defaultValue = from d in x.Elements("default") 
         select d.Element("default").Value; 

    TextBox1.Text = defaultValue; 
0

而且将最终输入写回数据源

  1. in FormClosed事件处理程序或
  2. 将强制窗体关闭的异常处理程序。
7

很可能,您没有正式的数据源,如后端数据库。对于这种情况,请使用.NET application settings architecture在运行之间保存和恢复应用程序设置。

+0

你是对的我不知道。虽然我不太了解msdn的解释。 还有什么帮助? :-S 请编号sooo很棒 – Christina 2010-02-28 15:21:23

+0

尝试过它和视觉工作室不喜欢它有get和set的问题? – Christina 2010-02-28 15:24:33

+0

@Christina:什么问题?我多次使用这种方法,所以它确实有效。由于我从来没有遇到过问题,除非你解释你有什么问题,否则没有人能够提供帮助。 – recursive 2010-02-28 17:39:22

0

我不确定这是否是您需要的,但是当您通过设计器定义TextBox时,您可以将它的Text属性设置为任何值。默认情况下它是empty,但如果您愿意的话,它可以是1.5。如果用户将再次打开程序,它将是1.5而不是最后一次使用。当您关闭表单并再次打开表单时也是如此。由于它是您始终想要使用的全局值,因此无需在其他地方保存该值。

可选,你可以在MainForm_Load()这样的补充:如果它是你不希望永远改变恒定值myTextBox.Text = '1.5';

这两种解决方案才有效(否则你将不得不重新部署应用程序。

0
public partial class Form1 
{ 
    public string defaultValue; 

    private void form2Open_Click(object sender, EventArgs e) 
    { 
     Form2 f = new Form2(); 
     if (defaultValue != null) 
      f.textBox1.Text = defaultValue; 
     f.mainForm = this; 
     f.Show(); 
    } 
} 

public partial class Form2 
{ 
    public Form1 mainForm; 
    private void Form2_Closing(object sender, DontRememberWhatItsCalledEventArgs e) 
    { 
     mainForm.defaultValue = textBox1.Text; 
    } 
} 

这是我在遇到类似问题时使用的方法。 (我现在不能测试它,但你应该能看到代码应该做什么:))

0

public partial class Form1 { public string defaultValue;

private void form2Open_Click(object sender, EventArgs e) 
{ 
    Form2 f = new Form2(); 
    if (defaultValue != null) 
     f.textBox1.Text = defaultValue; 
    f.mainForm = this; 
    f.Show(); 
} 

}

公共部分类窗体2 { 公共Form1中的MainForm; private void Form2_Closing(object sender,DontRememberWhatItsCalledEventArgs e) { mainForm.defaultValue = textBox1.Text; } }

0

另一种方法是使用Application.UserAppDataRegistry Property

这里是一个小例子:

private void LoadSettings() 
{ 
    textBoxOutput.Text = (String)Application.UserAppDataRegistry.GetValue("SomeName", String.Empty); 
} 

private void SaveSettings() 
{ 
    Application.UserAppDataRegistry.SetValue("SomeName", textBoxOutput.Text); 
}