情况如下:
http://i962.photobucket.com/albums/ae103/kashyaprakesh/misc/denominationwindow.jpg
我有左边的文本框,接受面额值,右边的其他文本框给出了例如的总值。在1000的标签的左侧文本框中,如果我将值设为5然后向右,则值为5000。
我使用lostFocus事件处理程序来执行此操作,但是是否有必要为每个文本框执行丢失焦点事件处理程序?肯定会有另一种方式。
private void textBox6_Leave(object sender, EventArgs e)
{
MessageBox.Show(e.ToString());
if (textBox6.Text == "")
{
string y = "0";
textBox6.Text = y;
textBox8.Text = y;
}
else
{
textBox8.Text = populateTotalAmount(textBox6.Text, 1000);
}
textBox8.ReadOnly = true;
}
private string populateTotalAmount(string denominations, int value)
{
int totalVal = Int32.Parse(denominations) * value;
return totalVal.ToString();
}
我想创建一个适用于LostFocus
事件的通用事件处理程序,我还需要传递不同的值(即500,100等等)
这样我就可以使用该值发送它populateTotalAmount
函数。
答案 0 :(得分:1)
没有令人信服的理由不只是简单地迭代文本框并计算结果。这段代码在人类时间运行,她无法区分微秒和毫秒之间的差异。
现在,您可以为所有文本框提供一个 Leave事件处理程序。 TextChanged也会起作用,但是让人迷失方向。
答案 1 :(得分:0)
假设您使用的是WinForms,您可以创建一个自定义控件,将乘法值作为属性,然后将该控件添加到表单中。
答案 2 :(得分:0)
这样的东西(尚未测试过)
foreach (Control ctrl in Controls)
{
if (ctrl is TextBox && ctrl.Name.StartsWith("math"))
ctrl.Focused += OnFocus;
}