C# 从动态创建的WinForms文本框中获取文本
我正在用动态创建的文本框制作一个windowsform,正如你在方法中看到的那样C# 从动态创建的WinForms文本框中获取文本,c#,winforms,textbox,C#,Winforms,Textbox,我正在用动态创建的文本框制作一个windowsform,正如你在方法中看到的那样 public void createPassengerBoxes(int numPassenger) { TextBox[] passengerBoxes = new TextBox[numPassenger]; for (int u = 0; u < passengerBoxes.Count(); u++) { pas
public void createPassengerBoxes(int numPassenger)
{
TextBox[] passengerBoxes = new TextBox[numPassenger];
for (int u = 0; u < passengerBoxes.Count(); u++)
{
passengerBoxes[u] = new TextBox();
}
int i = 0;
foreach (TextBox txt in passengerBoxes)
{
string name = "passenger" + i.ToString();
txt.Name = name;
txt.Text = name;
txt.Location = new Point(244, 32 + (i * 28));
txt.Visible = true;
this.Controls.Add(txt);
i++;
}
}
}
public void createPassengerBoxes(int numPassenger)
{
TextBox[]passengerBoxes=新的TextBox[numPassenger];
对于(int u=0;u
如何访问框中的文本?将文本框声明移到函数之外。这使得它可以从类中的其他函数访问:
class MyFormsClass
{
// declare textboxes at class level
TextBox[] passengerBoxes;
public void createPassengerBoxes(int numPassenger)
{
passengerBoxes = new TextBox[numPassenger];
...
}
public void OnButtonClick(...)
{
if (passengernBoxes != null)
{
foreach (TextBox txt in passengerBoxes)
{
// do something with textboxes
}
}
}
...
}
虽然我不确定在什么时候,或者基于什么操作,您想要获取数据,但这里有一个非常通用的方法:
private String[] GetTextBoxStrings()
{
List<String> list = new List<String>();
foreach (Control c in this.Controls)
{
if (c is TextBox)
list.Add(((TextBox)c).Text);
}
return list.ToArray();
}
private String[]GetTextBoxStrings()
{
列表=新列表();
foreach(此.Controls中的控件c)
{
如果(c是文本框)
添加(((文本框)c).Text);
}
return list.ToArray();
}
您也可以使用Lambda:
var strings = Controls.OfType<TextBox>()
.Select(c => c.Text)
.ToList();
var strings=Controls.OfType()
.选择(c=>c.Text)
.ToList();
只有在没有嵌套控件的情况下,这才有效-例如,一个窗格或一个组以什么容量容纳一些文本框?我的意思是,只是随机访问控件的文本,或者你的意思是对TextChanged或其他用户事件做出反应?我想创建一个新方法,可以获取用户放入文本框中的文本