【问题标题】:Saving the default value of a textbox c#保存文本框c#的默认值
【发布时间】:2010-03-05 21:35:39
【问题描述】:

我正在创建一个计算器类型的程序。

我有一个用户可以更改其值的文本框。此文本框用于某些计算。

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

例如,文本框默认值为 1.5。用户将其更改为 5,然后关闭表单。下次用户打开表单时,文本框默认值现在是 5 而不是 1.5

如果我是新手,我将不胜感激

【问题讨论】:

    标签: c# winforms textbox


    【解决方案1】:

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

    【讨论】:

    • 你说得对,我不知道。我不太明白msdn的解释。有什么进一步的帮助吗? :-S 请不要太棒了
    • 试过了,Visual Studio 不喜欢它的 get 和 set 有问题?
    • @Christina:什么问题?我已经多次使用这种方法,所以它确实有效。因为我从来没有遇到过问题,除非你解释你遇到了什么问题,否则没有人可以提供帮助。
    • @Christina:如果您使用设置架构,更改可能会影响所有用户,听起来不是您想要的。
    • @Christina:看看这个链接是否对你有帮助 - msdn.microsoft.com/en-us/library/ms171565.aspx。与上面的链接相比,它更像是一种食谱方法,它只是提供了一个概述。
    【解决方案2】:

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

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

    在 Form_Load 方法中,您可以检索该值并将其设置在文本框中。假设,你把它写在一个文本文件中,代码是:

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

    【讨论】:

    【解决方案3】:

    并将最终输入写回数据源

    1. FormClosed 事件处理程序或
    2. 将强制关闭表单的异常处理程序。

    【讨论】:

      【解决方案4】:

      执行此操作的更好方法是将文本框绑定到数据源。根据您的要求,数据源可以是任何东西。例如,如果您更喜欢 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;
      

      【讨论】:

        【解决方案5】:

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

        您可以选择添加MainForm_Load() 类似这样的内容:myTextBox.Text = '1.5';

        这两种解决方案只有在您永远不想更改的恒定值时才有效(否则您将不得不重新部署应用程序。

        【讨论】:

          【解决方案6】:
          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;
              }
          }
          

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

          【讨论】:

            【解决方案7】:

            公共部分类Form1 { 公共字符串默认值;

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

            }

            公共部分类Form2 { 公共Form1主窗体; 私人无效Form2_Closing(对象发送者,DontRememberWhatItsCalledEventArgs e) { mainForm.defaultValue = textBox1.Text; } }

            【讨论】:

              【解决方案8】:

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

              这是一个小例子:

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

              【讨论】:

                猜你喜欢
                • 2011-08-30
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多