我在表单上有几个文本框列表,每个文本框都代表一个数据库列。我希望每次用户退出其中一个方框时更新表单以获取价格。这个列表的名称是priceBox []。我知道lostFocus事件,但我似乎无法找到一种方法让它为一个集合工作,这个列表可以增长,所以我不能有一个固定的数字。我还没有任何代码。如果它有助于文本框控件包含在名为panel1的面板中。
我试过搜索,无法找到任何相关信息。仅适用于单个实例,例如更新1个文本框。
抱歉,如果这是重复但我确实尝试搜索。我也是c#的新手。
感谢。
答案 0 :(得分:4)
一种方法是向面板添加ControlAdded处理程序,因此每次添加新文本框时,它都会自动为其添加LostFocus处理程序。下面一步一步:
对于您的面板,您绑定一个处理程序ControlAdded事件,类似于:
private void Panel1_ControlAdded(object sender, ControlEventArgs e)
{
var tb = e.Control as TextBox;
if (tb != null)
{
tb.LostFocus += new EventHandler(TextBox_LostFocus);
}
}
然后在TextBox_LostFocus中,你可以添加你想要的任何逻辑
void TextBox_LostFocus(object sender, EventArgs e)
{
var tb = sender as TextBox;
if (tb != null)
{
// modify tb.Text here, possibly like this...
tb.Text = String.Format("{0:C}", Decimal.Parse(tb.Text));
}
}
更新所有现有控件(未测试)
foreach (TextBox in panel1.Controls)
{
tb.LostFocus += new EventHandler(TextBox_LostFocus);
}