我正在尝试创建一个小应用程序,以便通过WinForms C#轻松创建定义(新的Web表单aspx)。
现在我有了这个表单,我告诉应用程序我要创建多少个文本框。
创建之后,我想为字符串分配我写的文本框值。
private void CreateControls()
{
for (int index = 0; index < NumberOfRows; index++)
{
TextBox textBox = new TextBox();
textBox.Name = "TextBox" + (index + 1).ToString();
textBox.Size = new Size(120, 20);
textBox.Location = new Point(X, Y + 26);
ComboBox comboBox = new ComboBox();
comboBox.Name = "ComboBox" + (index + 1).ToString();
comboBox.Size = new Size(75, 20);
comboBox.Location = new Point(141, Y + 26);
comboBox.DataSource = Enum.GetNames(typeof(DataTypes));
Y += 26;
this.Controls.Add(textBox);
this.Controls.Add(comboBox);
}
}
现在,我不知道如何检查是否创建了文本框,然后获取它们的值。
有人可以推荐一些东西吗?谢谢:)!
答案 0 :(得分:2)
您需要在Page_Load
上找到这些控件并获取其值。由于你在创建它们时给了它们有意义的名字,这应该可以解决问题:
for (int index = 0; index < NumberOfRows; index++)
{
TextBox textBox = this.FindControl(
string.Format("TextBox{0}", index)) as TextBox;
if (textBox == null) { continue; } // this means it wasn't found
var text = textBox.Text;
// work with the text
}
但是,如果您使用的ComboBox
类不是第三方类,并且它不是ASP.NET应用程序,则该代码也适用于Windows窗体应用程序以及稍作修改:
for (int index = 0; index < NumberOfRows; index++)
{
// you have to use the Find method of the ControlCollection
TextBox textBox = this.Controls.Find(
string.Format("TextBox{0}", index)) as TextBox;
if (textBox == null) { continue; } // this means it wasn't found
var text = textBox.Text;
// work with the text
}
我倾向于同意社区,它可能是Windows窗体应用程序,因为您无法设置标准 ASP.NET控件的Location
。但是,如果这些是支持这些属性并呈现相应CSS的用户控件或第三方控件,那么我们永远不会知道。
答案 1 :(得分:0)
if(Page.FindControl("IDofControl") != null)
//exists
else
//does no exists