我动态生成一些文本框并将它们放入画布中。
private void create_textbox(int number)
{
for(int i = 1; i < number; i++)
{
TextBox MyBox = new TextBox();
darsteller_feld.Name = Convert.ToString("MyBox" + number);
MyBox.Height = 25;
MyBox.Width = 250;
MyBox.Text = "New Box" ;
MyBox_canvas.Children.Add(MyBox);
}
}
所以我认为我可以将所有文本放入字符串[]中,如下所示:
for(int i = 0; i < number; i++)
{
ARR[i] = ?Unknown_Textbox_Name?.Text;
}
如何更换“?Unknown_Textbox_Name?”一部分?
答案 0 :(得分:2)
您可以在创建文档框时将其保存在列表中,只需将它们添加到数组中即可。
或者如果你想要更通用的东西
你需要使用该方法在画布中找到所有的子画面。
CakeLog::config('custom_directory', array(
'engine' => 'FileLog',
'path' => 'webroot/my-logs/'
));
然后你按照这样的控件进行枚举
public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
{
if (depObj != null)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
if (child != null && child is T)
{
yield return (T)child;
}
foreach (T childOfChild in FindVisualChildren<T>(child))
{
yield return childOfChild;
}
}
}
}
答案 1 :(得分:0)
使用 @Moez Rebai 解决方案,或者,如果您的TextBoxes
是您Canvas
的直接子女:
var textboxes= MyBox_canvas.Children.OfType<TextBox>();
此外,您可能希望为每个TextBox
提供一个nema,以便以后区分它们:
MyBox.Name = "MyTextBox"+i;