C# 是否可以更改多次显示的表格中的值

C# 是否可以更改多次显示的表格中的值,c#,winforms,C#,Winforms,我有一个表格,在离开前一个表格的控制时会显示出来。假设我的表单1有一个文本框,我将在那里输入一个值作为2。离开后,我将在那里显示表单2。我将在其中显示一些文本框。我将有一个序列号,该序列号应自动递增,就像我在初始加载时有0001一样。单击“保存”后,我将显示相同的表单,直到它与之前的值匹配为止需要的是当用户点击保存我想自动增加文本框的值可以给我一个想法吗 我的代码如下 Form2保存按钮 private void btnSave_Click(object sender, EventArgs e

我有一个表格,在离开前一个表格的控制时会显示出来。假设我的表单1有一个文本框,我将在那里输入一个值作为2。离开后,我将在那里显示表单2。我将在其中显示一些文本框。我将有一个序列号,该序列号应自动递增,就像我在初始加载时有0001一样。单击“保存”后,我将显示相同的表单,直到它与之前的值匹配为止需要的是当用户点击保存我想自动增加文本框的值可以给我一个想法吗

我的代码如下

Form2保存按钮

 private void btnSave_Click(object sender, EventArgs e)
    {
        if (filecontrolvariables.m_Addendaclick == true)
        {
            objCTXAddenda.Addenda_RecordTypeCode = txtRectypecode.Text;
            objCTXAddenda.Addendatypecode = txtAddendaTypeCode.Text;
            objCTXAddenda.PaymentRelatedInformation = txtPaymentRelInfo.Text;
            objCTXAddenda.Addendasequencenumber = txtAddendaSeqNo.Text;
            objCTXAddenda.EntryDetailSequenceNumber = txtEntryDetailSeqNumber.Text;
            Append.addendawithentry++;
            objCTXAddenda.saveAddenda(Append.FileName);
            this.Close();
            frmMain.loadAddenda("Addenda", true);
        }
        else
        {
            timeBeforeClose--;

            if (timeBeforeClose == 0)
            {
                txtAddendaSeqNo.Text = Append.AddendaSequenceno.ToString("0000");
                objCTXAddenda.Addenda_RecordTypeCode = txtRectypecode.Text;
                objCTXAddenda.Addendatypecode = txtAddendaTypeCode.Text;
                objCTXAddenda.PaymentRelatedInformation = txtPaymentRelInfo.Text;
                objCTXAddenda.Addendasequencenumber = txtAddendaSeqNo.Text;
                objCTXAddenda.EntryDetailSequenceNumber = txtEntryDetailSeqNumber.Text;
                objCTXAddenda.saveAddenda(Append.FileName);
                txtPaymentRelInfo.Text = string.Empty;
                this.Close();// I will close the form when this matches
                Append.addendawithentry++;
            }
            else
            {
                objCTXAddenda.Addenda_RecordTypeCode = txtRectypecode.Text;
                objCTXAddenda.Addendatypecode = txtAddendaTypeCode.Text;
                objCTXAddenda.PaymentRelatedInformation = txtPaymentRelInfo.Text;
                objCTXAddenda.Addendasequencenumber = txtAddendaSeqNo.Text;
                objCTXAddenda.EntryDetailSequenceNumber = txtEntryDetailSeqNumber.Text;
                objCTXAddenda.saveAddenda(Append.FileName);
                txtPaymentRelInfo.Text = string.Empty;
                Append.addendawithentry++;
                Append.AddendaSequenceno++;

            }
        }
    }
当窗体加载时,但由于第二次未加载,因此无法增加

private void frmAddenda_Load(object sender, EventArgs e)
    {
        Append.addendawithentry = 0;
        if (filecontrolvariables.m_Addendaclick == true)
        {
            btnCancel.Visible = true;
            Append.AddendaSequenceno++;
            StringBuilder sbEmpty = new StringBuilder();
            Append.sbEntryAddenda = sbEmpty;
            txtRectypecode.Text = ((char)55).ToString();
            txtAddendaTypeCode.Text = "05";
            txtAddendaSeqNo.Text = Append.AddendaSequenceno.ToString("0000");
        }
        else
        {
            btnCancel.Visible = false;
            Append.AddendaSequenceno++;
            StringBuilder sbEmpty = new StringBuilder();
            Append.sbEntryAddenda = sbEmpty;
            txtRectypecode.Text = ((char)55).ToString();
            txtAddendaTypeCode.Text = "05";
            if (!(timeBeforeClose == 0))
                txtAddendaSeqNo.Text = Append.AddendaSequenceno.ToString("0000");
            else
                txtAddendaSeqNo.Text = Append.AddendaSequenceno.ToString("0000");
        }
    }
上表代码

private void txtNoOfAddenda_Leave(object sender, EventArgs e)
    {
        filecontrolvariables.m_Addendaclick = false;
        pass();
        if (Convert.ToInt16(txtNoOfAddenda.Text) == Convert.ToInt16(((char)48).ToString()))
        {
            txtAddendarecord.Text = ((char)48).ToString();
        }
        else
            txtAddendarecord.Text = ((char)49).ToString();
    }

  private void pass()
    {
        string traceNo = string.Empty;
        i = 0;
        if (!int.TryParse(txtNoOfAddenda.Text, out i))
        {
            MessageBox.Show("Enter numeric value betewwn(0-9999)");
            txtNoOfAddenda.Focus();
        }
        else
        {
            if (i > 0)
            {
                traceNo = txtTraceNo.Text.Substring(8, 7);
                frmAddenda frmAddenda = new frmAddenda(i, traceNo);
                frmAddenda.ShowDialog();
                txtNoOfAddenda.Leave -= txtNoOfAddenda_Leave;
            }
        }

    }

我不能完全理解你的问题,但我想就我理解的内容向你提出建议

我的理解是,您希望在单击form2的“保存”按钮时增加form1文本框的值。 要执行此操作,请执行以下步骤:

将form1的文本框设置为public,在其中您希望从form1获得值。 在form2中创建form1的对象,如:

Form1 f1;
现在,当您从form1的文本框在lostfocus上显示form2时。在显示表格2之前,请执行以下操作:

Form2 f2 = new Form2();
f2.f1 = this;
f2.showdialog() or you can use f2.show();
现在,在表单2中,单击“保存”按钮,编写以下代码:

f1.yourPublicTextBox.text = "any value which you wants on textbox";
或者就像你说的,你想自动增加它

f1.yourPublicTextBox.text = (Convert.ToInt32(yourPublicTextBox.text) + 1).toString();
就这样

编辑:

不要让form2关闭,因为在form2关闭时,form2的对象将变为null。所以,把它藏起来,再展示一遍

所以下面的代码显示,在点击关闭按钮时,我们不允许用户允许关闭表单,我们只是将其隐藏起来,您可以在需要时再次显示它

private void Form2_FormClosing(object sender, FormClosingEventArgs e)
            {
                e.Cancel = true;
                this.Hide();
            }

这个问题我看了两遍,觉得自己不太明白,所以我只留下一条评论。。。您是否考虑过每次显示表单时递增的
静态
成员变量?然后你可以在文本框中显示这个值。是的,我这样做了,但我不能在文本框中显示,因为表单没有加载。我需要的是,如果我在form1的文本框中输入值作为休假事件2,我会编写代码在form2上显示form2,我会自动递增文本框。它应该递增,但根据我的条件,如果输入2在form1中,第二个表单将显示2次,用户无法关闭它,直到我的条件满足,但我希望在每次单击保存时显示自动idform2@Dorababu:让我们一步一步走。确认我第一个要求是,如果在form1的文本框中输入2,那么form2的两个实例应该打开?是,当第二个表单加载我发布的代码时,else部分执行,文本框文本将如下0001@Dorababu:创建类并获取公共静态变量。从任何表单中设置值,您将能够从任何其他表单中获得相同的值,而不会出现任何问题。但是,当我单击“保存”时,它们不会同时显示,直到我的条件满足为止,它将显示相同的表单。文本0001将显示在表单2文本框中,而不是表单1文本框中