【问题标题】:Update textBox.Text default value on a button click in WinForms在 WinForms 中单击按钮时更新 textBox.Text 默认值
【发布时间】:2014-08-28 00:09:07
【问题描述】:

我有以下代码,不知道如何更进一步。我只是想在 Form_Load() 方法中更新文本框的默认文本,当我在其上编写新文本并单击“保存”按钮时。

提前致谢

private void Form7_Load(object sender, EventArgs e)
    {
        textBox1.ForeColor = System.Drawing.Color.Gray;   
        textBox1.Text =                 
    }

    private void textBox1_Click(object sender, EventArgs e)
    {
        textBox1.Clear();
        textBox1.ForeColor = textBox1.ForeColor = SystemColors.WindowText;
    }

    private void buttonSave_Click(object sender, EventArgs e)
    {
        string def = ret();
    }

    private string ret()
    {
        string text = textBox1.Text;
        return text;
    }

【问题讨论】:

  • 我不确定我是否理解您的问题...只需在Form_Load 事件中设置textBox1.Text = "some text" 即可?
  • 目前发生了什么错误、异常、什么??
  • 是否要保存更改的文本,然后在下次应用程序启动时加载此值?
  • 重点是我想在文本框中写一个文本然后点击“保存”按钮,那么文本框应该将其默认值更新为所写的文本,这样新写的文本就会显示出来在文本框中,每次加载或打开表单时。
  • 约翰萨普斯。是的,这正是我想要的。

标签: c# winforms


【解决方案1】:

要在应用程序重新启动之间保存/恢复值,最好使用 .NET 设置机制。转到项目的属性,然后单击选项卡“设置”。添加一些设置,例如“TextBoxDefaultValue”,确保它是String 类型并标记为User 设置。

在您的代码中,您可以像这样访问设置

textBox1.Text = Properties.Settings.Default.TextBoxDefaultValue;

要更改和保留设置,请使用以下命令:

Properties.Settings.Default.TextBoxDefaultValue := textBox1.Text;
Properties.Settings.Default.Save();

此设置现在基于每个用户保留。

所以在你的代码中会这样写:

private void Form7_Load(object sender, EventArgs e)
{
    textBox1.ForeColor = System.Drawing.Color.Gray;   
    textBox1.Text = Properties.Settings.Default.TextBoxDefaultValue;
}

private void buttonSave_Click(object sender, EventArgs e)
{
    Properties.Settings.Default.TextBoxDefaultValue = ret();
    Properties.Settings.Default.Save();
}

顺便说一句:您应该考虑一下如果用户不是通过单击文本框而是通过 Tab 键进入文本框会发生什么。也许您应该查看OnEnterOnLeave 事件...

【讨论】:

    【解决方案2】:

    TextBox.Text 没有默认值,或者如果您愿意,在创建控件时它是空白的。要在其中设置默认值,您需要实现它(好吧,通过设置TextBox.Text)并选择Form.Load 是一个不错的选择。

    要在应用程序启动之间保持默认值,您必须以某种方式将此值保存在某处:文件、数据库、注册表、服务器等。请参阅this 问题。

    我自己会使用简单的XmlSerializer

    public class MyData
    {
        public string Text; // to save textbox text, could be public field or property
    }
    
    // to save
    var data = new MyDate() { Text = textBox.Text };
    using (var stream = new FileStream("somefile", FileMode.OpenOrCreate))
    {
        var serializer = new XmlSerializer(data.GetType()); // or typeof(MyData)
        serializer.Serialize(fileStream, data);
    }
    
    // to load
    using (var stream = new FileStream("somefile", FileMode.Open, FileAccess.Read))
    {
        var serializer = new XmlSerializer(typeof(MyData));
        var data = serializer.Deserialize(stream) as MyData;
        textBox.Text = data.Text;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      相关资源
      最近更新 更多