実行時に多くのテキストボックスを作成したので、それらに値を追加したい..その後、ボタンをクリックしてテキストボックス内のこれらすべての値を計算するボタンを追加しますが、これらのテキストボックスにアクセスする方法がわかりません? ?
ありがとう
メソッド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";
StackPanel のようなコンテナに TextBoxes がある場合、次のようなことができます...
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());
}
これは単なるサンプルです。テキスト ボックスをスタック パネルに配置するとします。コンテナが必要です。
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);
}