我在运行时创建了很多文本框然后我想为它们添加值..之后我添加一个按钮来点击它并在文本框中计算所有这些值,但我不知道如何访问这些文本框??
由于
答案 0 :(得分:1)
你试过FindControl方法吗?
private void Button1_Click(object sender, EventArgs MyEventArgs)
{
// Find control on page.
Control myControl1 = FindControl("TextBox2");
if(myControl1!=null)
{
// Get control's parent.
Control myControl2 = myControl1.Parent;
Response.Write("Parent of the text box is : " + myControl2.ID);
}
else
{
Response.Write("Control not found");
}
}
参考:http://msdn.microsoft.com/en-us/library/system.web.ui.control.findcontrol(v=vs.71).aspx
我可以不时地使用这种方法,只要您知道文本框的名称或者您需要的控制权。
FindControl("textboxnamehere").Text = "This would put this string in the current text box";
答案 1 :(得分:0)
这只是一个示例,让我们假设您将文本框放在堆栈面板中 - 您需要一个容器!,
private void Button_Click(object sender, RoutedEventArgs e)
{
var sum = 0.0;
foreach (var child in stackPanel.Children)
{
var textBox = child as TextBox;
if (textBox == null) continue;
double value;
Double.TryParse(textBox.Text, out value);
sum += value;
}
Console.WriteLine(sum);
}
当然,我假设你知道你可能想要验证输入(使用数字文本块),button.Click + = Button_click;等等。
编辑问题
private void Button_Click(object sender, RoutedEventArgs e)
{
var sum = 0.0;
for (int i = 1; i < grid.Children.Count; i++ )
{
var textBox = grid.Children[i] as TextBox;
if (textBox == null) continue;
double value;
Double.TryParse(textBox.Text, out value);
sum += value;
}
Console.WriteLine(sum);
}
答案 2 :(得分:0)
如果你有一个容器中的TextBox,就像StackPanel一样,你可以这样做......
private void btnCalculate_Click(object sender, EventArgs e)
{
var total = 0;
var textboxes = StackPanelParent.Children.OfType<TextBox>();
foreach (var textbox in textboxes)
{
var input = 0;
int.TryParse(textbox.Text, out input);
total += input;
}
MessageBox.Show(total.ToString());
}