获取创建的TextBoxes的内容"on the fly"

已加入
2018年1月3日
留言内容
14
编程经验
Beginner
我有一个TableLayoutPanel(称为userPanel),在其中创建3行,其中包含一个标签和两个文本框。在应用程序启动时,我像这样创建它们:

C#:
[FONT=courier new]public MainForm() {[/FONT]
[FONT=courier new]   InitializeComponent();

[/FONT][FONT=courier new]   for (int i = 0; i < userPanel.RowCount; i++) {[/FONT]
[FONT=courier new]      userPanel.Controls.Add(new Label() { Text = "Login"});[/FONT]
[FONT=courier new]      userPanel.Controls.Add(new TextBox());[/FONT]
[FONT=courier new]      userPanel.Controls.Add(new TextBox());[/FONT]
[FONT=courier new]   }
}[/FONT]

现在,是否可以引用上面创建的这些标签和文本框?由于他们没有名字,所以我还没有找到获取内容的方法。

(具体来说,我要做的是将内容存储在application.settings中,然后在下次启动时加载它们。我知道该怎么做。)
 
Last edited:
已加入
2018年1月3日
留言内容
14
编程经验
Beginner
嗯我看不出来怎么办?有.Control.IndexOf(),但是据我所知,这需要对控件的命名引用?我看不到获取实例内容的方法"control number 1" in the table?

我正在创建3行,每行3个控件。我想要的是一种表达方式"给我每行第2和3个控件的文本内容".

我之所以没有创建和命名控件,是因为我有一个"Add row"按钮,可让我添加额外的行。
 

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,073
地点
挪威
编程经验
10+
userPanel.Controls.Item [索引或名称]
我之所以没有创建和命名控件,是因为我有一个"Add row"按钮,可让我添加额外的行。
您仍然可以使用RowCount来命名,这也是循环的目标索引。
我想要的是一种表达方式"给我每行第2和3个控件的文本内容".
您当前的循环执行步骤1(i ++),而不是执行步骤3(i + = 3)以获取每一行的第一个索引-然后您可以向其添加1或2以获取每一行的第二个和第三个控件。
 
已加入
2018年1月3日
留言内容
14
编程经验
Beginner
谢谢。循环不是问题-我不是一个菜鸟  :D

我无法让.Item []工作:"TableLayoutControlCollection不包含“项目”的定义..."

但是,经过一番混乱和环顾四周,我发现了这一点:

userPanel.GetControlFromPosition(1、0).Text
 
最佳 底部