我用下面的代码创建一个TextBox:
TextBox textBox = new TextBox();
textBox.Name = propertyName;
textBox.Text = value;
textBox.Width = FormControlColumnWidth;
textBox.SetResourceReference(Control.StyleProperty, "FormTextBoxStyle");
sp.Children.Add(textBox); //StackPanel
FormBase.Children.Add(sp);
单击按钮后,我想获取该文本框的文本值,但无法在代码中指定:
string firstName = FirstName.Text;
因为将在运行时定义“名字”。那么,如何在编译时不知道文本框名称的情况下获取文本框的文本值呢?
以下是我到目前为止的内容,但它说即使在运行时定义了它也找不到“ FirstName”:
private void Button_Save(object sender, RoutedEventArgs e)
{
using (var db = Datasource.GetContext())
{
var item = (from i in db.Customers
where i.Id == TheId
select i).SingleOrDefault();
item.FirstName = ((TextBox)FindResource("FirstName")).Text;
db.SubmitChanges();
}
}
可复制的示例:
我在此处发布了此问题的完整示例,并提供了完整的示例:Why can't I access a TextBox by Name with FindName()?,也许更易于分析。
最佳答案
最简单的解决方案可能是在代码中的某个位置保留对文本框的引用。只需添加一个
private TextBox _textbox
在类的顶部,并将其设置为您在代码中添加的TextBox。然后,您可以在Button_Save事件处理程序中引用它。
关于c# - 如何获取在运行时分配了名称的TextBox的Text值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1755231/