检查TextBox是否已创建,然后分配它的值

时间:2013-09-17 13:33:38

标签: c# asp.net

我正在尝试创建一个小应用程序,以便通过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);
        }
    }

现在,我不知道如何检查是否创建了文本框,然后获取它们的值。

有人可以推荐一些东西吗?谢谢:)!

2 个答案:

答案 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