我在这里的第一篇文章。
我正在构建一个计算器,它通过文本框获取用户输入并转换为double并将这些数字传递到包含公式的自定义类中(一旦完成,答案将转换回字符串)。我有一切正常,但我希望带有答案的标签在文本框填写后自动更新。单击后标签文本输出正确。
这是迄今为止我为标签制作的代码......
private void lblUtil1_Click(object sender, EventArgs e)
{
dblUtil1 = Tinseth.Bigness(dblSG) * Tinseth.BTFactor(dblBT1);
double UtilRounded1 = Math.Round(dblUtil1 * 100);
lblUtil1.Text = UtilRounded1.ToString() + "%";
}
是否存在可以检测所有相关字段是否已完成或是否需要循环的内容?我非常感谢所有的帮助,并期待成为这个社区的一员!
growthtek
答案 0 :(得分:1)
一种方法是:
private void lblUtil1_Click(object sender, EventArgs e)
{
dblUtil1 = Tinseth.Bigness(dblSG) * Tinseth.BTFactor(dblBT1);
double UtilRounded1 = Math.Round(dblUtil1 * 100);
lblUtil1.Text = UtilRounded1.ToString() + "%";
}
共享方法:
private void Calculate();
{
dblUtil1 = Tinseth.Bigness(dblSG) * Tinseth.BTFactor(dblBT1);
double UtilRounded1 = Math.Round(dblUtil1 * 100);
lblUtil1.Text = UtilRounded1.ToString() + "%";
}
并摆脱Click
事件。然后使用文本框Validated
事件:
private void TextBox_Validated(object sender, EventArgs e)
{
Calculate();
}
现在将所有文本框Validated
事件挂钩到同一个处理程序。现在,当用户离开文本框时,它将自动计算。
Validated
事件也可能很容易成为TextChanged
事件。每次输入数字时都会计算出来。但这可能太频繁了。
答案 1 :(得分:0)
创建一个执行计算的函数,然后将该函数绑定到所有文本框上的已更改事件。
答案 2 :(得分:0)
每次迈克尔或测量建议时,我都不运行计算。
相反,只需在点击事件中添加一些if语句,以测试所需的框是否具有值。如果他们不这样做,那么就显示一条消息说他们需要填写它。
类似的东西:
if (String.IsNullOrEmpty(TextBox1.Text)) {
MessageBox.Show("TextBox1 is empty");
return;
}