如何获得动态文本框值c#?



我创建了一个按钮来生成一些文本框,但是我不知道如何获得相应的文本框值。我只使用asp.net c#发现了一些类似的想法,但我认为这有点不同。这是我的代码:

public partial class Form1 : Form
{
int control = 1;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
TextBox txt = new TextBox();
this.Controls.Add(txt);
txt.Top = control * 25;
txt.Left = 100;
txt.Name = "TextBox" + this.control.ToString();
control = control + 1;
}
有人能帮帮我吗?

你已经在this.Controls中添加了文本框所以你可以在那里重新找到它们

foreach(var c in this.Controls){
if(c is TextBox t && t.Name.StartsWith("TextBox"))
MessageBox.Show(t.Text);

我想为Name选择比"TextBox"+integer更好的名称但只要你不命名其他你不想考虑的文本框使用相同的前缀,这个将只拾取那些你动态添加的

如果你知道控件的名称I,e,你知道你想要的地址,并且用户已经将它输入到TextBox 2中,你可以访问按名称索引的控件:

this.Controls["TextBox2"].Text;

甚至不需要强制转换为TextBox..所有控件都有一个文本属性

当您拥有文本框的实例时,您可以通过读取value属性来获取该值。获取实例的一种方法是在为文本框指定唯一名称时,在Controls列表中搜索它。

{
TextBox txt = new TextBox();
txt.Name = "UniqueName";
Controls.Add(txt);
}
{
foreach(var control in Controls)
if (control is TextBox tb && tb.Name == "UniqueName")
return tb.Value;
}

可以调用Control.ControlCollection。Find(String, Boolean)方法获取你想要的文本框

string text = ((TextBox)this.Controls.Find("textboxname", true)[0]).Text;

最新更新