在 WindowsForms 的程序中,我有两种形式:父和子。在子表单中,我更改了变量的值,该值在独立类中声明。
当我关闭子表单时,我需要在父表单的标签中显示变量的新值,但我只能看到旧的价值。如何更新?
这是我如何在父表单的构造函数中显示它:
label6.Text = indicators.Money + "$";
EDIT1:
无法理解,为什么它不会更新。父表单中的代码:
private void button3_Click(object sender, EventArgs e)
{
Computer computer = new Computer();
computer.ShowDialog();
label6.Refresh();
}
EDIT2
这就是我所做的。我还在尝试你的建议:
private void button3_Click(object sender, EventArgs e)
{
Computer computer = new Computer();
Code.Indicators indicators = new Code.Indicators();
if (computer.ShowDialog() == DialogResult.OK)
label6.Text = indicators.Money.ToString();
label6.Refresh();
}
其实我需要的是:
答案 0 :(得分:1)
尝试这样的Control.Refresh Method:
label6.Refresh();
每次更新编辑
这里真正的问题是你的方法。这是从子表单返回值的一种非常简单的方法,这是你想要的。
在您的子表单中添加一个属性,您可以使用该属性访问父表单中设置的Money
金额。
public partial class YourChildForm : Form
{
public string YourMoney { get; private set; }
// The rest of your form code
}
样本用法:
var childForm = new YourChildForm();
childForm.ShowDialog();
label6.Text = childForm.YourMoney;
答案 1 :(得分:1)
由于您声明您正在使用ShowDialog,因此您可以在从ShowDialog方法返回后立即从Child表单中读取值。正如我在评论中所说,我只需创建一个Public属性来设置和获取变量的值。
尝试这样的事情:
child.CurrentIndicator = indicators;
if(child.ShowDialog == DialogResult.OK)
indicators = child.CurrentIndicator;
label6.Text = indicators.Money;
在你的孩子形式中创建这样的属性;
public Indicator CurrentIndicator {get; set;} //You can use automatic properties or have a backing variable