如何停止在 formclosing 事件中将值从一种形式传递到另一种形式?
How to stop passing value from one form to other in formclosing event?
我有 2 个表格(form1、form2)。我可以将值从 form2 传递到 form1,但主要问题是,当我关闭 form2 时,他无论如何都会传递值,所以我在 form1 中得到空值。
例如:我将 2000 欧元的值添加到 form 1 文本框和标签中,然后当我再次打开 form2 时,保持 texbox 清除和 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;
}
我需要 change/add 什么来解决我的问题? 我希望当我传递值后打开 form2 并关闭它时,不要将空值发送到 form1。
首先,你的问题是不可读的,而且到处都是。其次,您似乎没有尝试验证这些值,或者至少没有向我们展示您为解决问题所做的努力。您可以轻松尝试以下方法之一
如果您希望 Form2 在值为空时停止
if (Passvalue2.Trim().Length <= 0)
{
MessageBox.Show("There is no Value");
return;
}
如果您想在检测到空白时提供默认值并继续该过程,您可以执行以下操作
Passvalue2 = radioButton2.Text.Trim().Length > 0 ? radioButton2.Text.Trim() : "SOME DEFAULT VALUE";
编辑
您也可以按如下方式更改 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;
}
}
如果您想单独检查 Passvalue 和 Passvalu2,只需拆分 if 语句中的条件即可。在这里,我假设您希望两个值在分配之前都具有某些内容。
一个简单的空值查询就可以解决您的问题。在关闭 Form2 并尝试将 Passvalues
分配给 Form1
的 Textboxes
时,只需检查 f2.Passvalue
和 [=15] 中是否存在有效值=].如果不为空赋值,否则保留旧值
trenutnoStanjeTB.Text = !String.IsNullOrWhiteSpace(f2.Passvalue) ? f2.Passvalue : trenutnoStanjeTB.Text;
DinEuLab1.Text = !String.IsNullOrWhiteSpace(f2.Passvalue2) ? f2.Passvalue2 : DinEuLab1.Text;
等等
我有 2 个表格(form1、form2)。我可以将值从 form2 传递到 form1,但主要问题是,当我关闭 form2 时,他无论如何都会传递值,所以我在 form1 中得到空值。 例如:我将 2000 欧元的值添加到 form 1 文本框和标签中,然后当我再次打开 form2 时,保持 texbox 清除和 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;
}
我需要 change/add 什么来解决我的问题? 我希望当我传递值后打开 form2 并关闭它时,不要将空值发送到 form1。
首先,你的问题是不可读的,而且到处都是。其次,您似乎没有尝试验证这些值,或者至少没有向我们展示您为解决问题所做的努力。您可以轻松尝试以下方法之一
如果您希望 Form2 在值为空时停止
if (Passvalue2.Trim().Length <= 0) { MessageBox.Show("There is no Value"); return; }
如果您想在检测到空白时提供默认值并继续该过程,您可以执行以下操作
Passvalue2 = radioButton2.Text.Trim().Length > 0 ? radioButton2.Text.Trim() : "SOME DEFAULT VALUE";
编辑
您也可以按如下方式更改 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; } }
如果您想单独检查 Passvalue 和 Passvalu2,只需拆分 if 语句中的条件即可。在这里,我假设您希望两个值在分配之前都具有某些内容。
一个简单的空值查询就可以解决您的问题。在关闭 Form2 并尝试将 Passvalues
分配给 Form1
的 Textboxes
时,只需检查 f2.Passvalue
和 [=15] 中是否存在有效值=].如果不为空赋值,否则保留旧值
trenutnoStanjeTB.Text = !String.IsNullOrWhiteSpace(f2.Passvalue) ? f2.Passvalue : trenutnoStanjeTB.Text;
DinEuLab1.Text = !String.IsNullOrWhiteSpace(f2.Passvalue2) ? f2.Passvalue2 : DinEuLab1.Text;
等等