我有一些动态创建的文本框,如果我想在面板中找到文本框,找到它的最佳方法是什么?
我在网上搜索,有人说通过 FindName 我们可能能够找到我们的控件,但为此我需要为我的每个文本框命名,并且在 WPF 中,即使我输入 int.ToString ,名称也必须带有非 int 字母搞砸了。但是如果我输入字母,我很难通过字母找到它们,数字会很好,因为我可以一直从 00 和 +1 开始,但我不能那样做。
我在动态创建的 WrapPanel 中动态创建了文本框,我在动态创建的 stackPanel 中添加了动态创建的 WrapPanel,然后我将该 stackkpanel 添加到我在 xaml 端创建的 WrapPanel
如果你问我为什么需要这么多面板,因为这是我可以让我看起来更好的唯一方法,因为我从 db 检索信息并显示它的方式。
这是我的代码的样子(我把它缩短了,因为它太长了):
private void PopulateQuestion(int activityID, int taskID)
{
IList<Model.questionhint> lstQuestionHints = qh.GetRecords(taskID, activityID);
StackPanel sp = new StackPanel();
foreach (Model.questionhint qhm in lstQuestionHints)
{
WrapPanel wp = new WrapPanel();
//some code ....
if (qhm.Option1.Trim().Length > 0 &&
qhm.Option2.Trim().Length > 0)
{
wp.Children.Add(space);
wp.Children.Add(tbox); //
}
sp.Children.Add(wp);// Adding wrap panel to stackpanel
} // end of for each loop.
WrapPanelTest.Children.Add(sp); // Adding stackpanel to WrapPanel ( in xaml)
}
WrapPanelTest 是我在 xaml 端创建的面板。所以现在如果我有一个按钮,我应该如何从这些面板中找到文本框控件?
我试过了 :
private void button1_Click(object sender, RoutedEventArgs e) // Check Button
{
int c = 0;
foreach (TextBox txtbox in WrapPanelTest.Children)
{
c++;
}
MessageBox.Show(c);
}
但它显示了这个错误(指向 foreach 循环中的 TextBox txtbox):