如何在formclosing事件中停止将值从一个表单传递给另一个表单?

时间:2017-01-25 13:13:30

标签: c# winforms formclosing

我有2个表单(form1,form2)。我可以将值从form2传递给form1,但主要的问题是,当我关闭form2时,他仍会传递值,所以我在form1中得到空值。  例如:我添加一个2000欧元的值来形成1个文本框和标签,然后当我再次打开form2,并保持texbox clear和radiobutt未选中时,然后用红色X关闭按钮关闭form2,form1价值2000欧元将消失。 这是传递值和按钮的源代码:

FORM2

private string pss;
public string Passvalue
{  

    get { return pss; }
    set { pss = value; }
}
private string pss2;  
public string Passvalue2
{
    get { return pss2; }
    set { pss2 = value; }
}

public void Btn1_Click(object sender, EventArgs e)//The passvalue button
{
    string eur="EUR";
    Passvalue = ukupnaCifraTB.Text;//textbox form2=the number sender
    ukupnaCifraTB.Text = String.Empty;



    if (radioButton1.Checked)
    {
        radioButton1.Text = eur;
        Passvalue2 = radioButton2.Text;
    }

    this.Close();
}

这里的形式1:

private string backvalue;
public string BackedValue
{
    get { return backvalue; }
    set { backvalue = value; }           
}

private string backedText;
public string BackedText
{
    get { return backedText; }
    set { backedText =  value; }
}

public void Btn1_Click(object sender, EventArgs e)
{
    Form2 f2 = new Form2(); 
    f2.ShowDialog();
    trenutnoStanjeTB.Text = f2.Passvalue;//trenutnostanjeTB=textbox(form1)=gets number from form2
    DinEuLab1.Text = f2.Passvalue2;//dineulab1=label form1=gets the eur text
    DinEuLab2.Text = f2.Passvalue2;

}

我需要更改/添加以解决我的问题? 我希望当我一次传递值,然后打开form2并关闭它时,不要将空值发送到form1。

2 个答案:

答案 0 :(得分:0)

首先,你的问题是不可读的,到处都是。其次,您似乎没有尝试验证这些值,或者至少向我们展示您尝试解决问题的方法。您可以轻松尝试以下其中一项

  1. 如果您希望Form2在值为空时停止

    if (Passvalue2.Trim().Length <= 0)    
    {       
        MessageBox.Show("There is no Value");
        return;
    }
    
  2. 如果您想在检测到空白时提供默认值并继续此过程,则可以执行以下操作

    Passvalue2 = radioButton2.Text.Trim().Length > 0 ? radioButton2.Text.Trim() : "SOME DEFAULT VALUE";
    
  3. 修改

    1. 您也可以按如下方式更改From1 Btn1_Click事件

      public void Btn1_Click(object sender, EventArgs e)
      
      {
          Form2 f2 = new Form2(); 
          f2.ShowDialog();
          if ((f2.Passvalue.Length > 0) && (f2.Passvalue2.Length > 0))
          {
              trenutnoStanjeTB.Text = f2.Passvalue;//trenutnostanjeTB=textbox(form1)=gets number from form2
              DinEuLab1.Text = f2.Passvalue2;//dineulab1=label form1=gets the eur text
              DinEuLab2.Text = f2.Passvalue2;
          }
      
      }
      
    2. 如果您想单独检查Passvalue和Passvalu2,只需在if语句中拆分条件即可。在这里,我假设您在分配它们之前想要两个值。

答案 1 :(得分:0)

对空虚的简单查询可以解决您的问题。在您关闭Form2并尝试将Passvalues分配给Textboxes的{​​{1}}时,只需检查Form1和{{1}中是否存在有效值}}。如果它们不为空,则分配它们,否则让旧值保持

f2.Passvalue

等等