保留文本框的先前值,直到表单关闭

Posted

技术标签:

【中文标题】保留文本框的先前值,直到表单关闭【英文标题】:retain previous value of text box till the form is closed 【发布时间】:2021-04-26 14:04:03 【问题描述】:

我对 c# 很陌生,正在学习制作数据输入应用程序, 在我的输入表单中,当用户单击保存时,所有数据文本框都会刷新并保存到数据库中,并且文本框显示为空以输入增益。这是一个连续的过程。 现在我希望我的 textbox1 保留用户第一次输入的相同值,直到表单关闭。 请帮助我如何实现这一目标? 我试过这段代码,但文本框仍然是空的:

private string value;
         private void materiaNumberTextBox_TextChanged(object sender, EventArgs e)
         
    
             var oldValue = value;
             value = ((TextBox)sender).Text; // text1.Text
    
       
         

这是保存时的代码:

private void btnsave_Click(object sender, EventArgs e)
         
             try
             
                 String msg = "Confirm Save?";
                 String caption = "Save Record";
                 MessageBoxButtons buttons = MessageBoxButtons.YesNo;
                 MessageBoxIcon ico = MessageBoxIcon.Question;
                 DialogResult result;
                 result = MessageBox.Show(this, msg, caption, buttons, ico);
                 if (result == DialogResult.Yes)
                 
                     generateautoID();
                     this.iP_SpoolsBindingSource.EndEdit();
                     MessageBox.Show("The Record saved Successfully:" + outputSpoolNoTextBox.Text, "Save_Update",
                         MessageBoxButtons.OK, MessageBoxIcon.Information);
                     this.iP_SpoolsTableAdapter.Update(this.pINQCDataSet.IP_Spools);
                     this.iP_SpoolsTableAdapter.Fill(this.pINQCDataSet.IP_Spools);
                     //MessageBox.Show("The Record saved Successfully:", "Save_Update",
                     //MessageBoxButtons.OK, MessageBoxIcon.Information);
                     this.iP_SpoolsBindingSource.AddNew();
                     string strStartenddateformat = "dd-MM-yyyy";
                     materialTypeComboBox.ValueMember = "Tungsten";
                     unitComboBox.ValueMember = "Mic";
                     statusComboBox.ValueMember = "Accepted";
                     cFComboBox.ValueMember = "";
                     bowOutOfComboBox.ValueMember = "";
                     ductilityOutofComboBox.ValueMember = "";
                     finishUOMComboBox.ValueMember = "Mic";
                     finishTypeComboBox.ValueMember = "Clean";
                     rejectReason1ComboBox.ValueMember = "";
                     rejectReason2ComboBox.ValueMember = "";
                     rejectReason3ComboBox.ValueMember = "";
                     lotNoTextBox.Text = "0";
    
    
    
                     dOEDateTimePicker.Format = DateTimePickerFormat.Custom;
                     dOEDateTimePicker.CustomFormat = strStartenddateformat;
                     dOEDateTimePicker.Value = DateTime.Now;
    
                     dOPDateTimePicker.Format = DateTimePickerFormat.Custom;
                     dOPDateTimePicker.CustomFormat = strStartenddateformat;
                     dOPDateTimePicker.Value = DateTime.Now;
                 
                 else
                 
                     return;
                 
             
             catch (Exception ex)
             
                 MessageBox.Show("Saving Failed:" + ex.Message.ToString(), "Save",
                     MessageBoxButtons.OK, MessageBoxIcon.Error);
             
         

这是我的表单的图像:

【问题讨论】:

由于您正在编辑表格,我可以给您的更好建议是取回保存在数据库中的数据并填写表格 【参考方案1】:

您可以尝试使用以下代码将第一个输入文本保存在文本框中。

请使用事件 textbox_Leave 事件。

 private void button1_Click(object sender, EventArgs e)
        
            //Update the database
            MessageBox.Show("Update success");
            textBox1.Text = textbox; // return to the first input in the textbox
     
        
        int i = 0;
        string textbox = "";
        private void textBox1_Leave(object sender, EventArgs e)
        
            if (i == 0)
            
                textbox = textBox1.Text;
                i++;
            
        

结果:

【讨论】:

【参考方案2】:

使用数据阅读器从数据库中获取值,然后使用这些值在文本框中填充值。

【讨论】:

以上是关于保留文本框的先前值,直到表单关闭的主要内容,如果未能解决你的问题,请参考以下文章

几种设置表单元素中文本输入框不可编辑的方法

js方法中已经获取到了文本框的值,当这个值的小数位数大于8时提示只能保留6位小数,怎么做?

表单提交后怎么样才能不清空文本框和下拉框的值呢?

Access表单上的文本框传递先前的值

表单元素

js获得文本框的值怎么转化成数值型啊