检查文本框是否已创建,然后分配其值

本文关键字:然后 分配 创建 文本 是否 检查 | 更新日期: 2023-09-27 18:31:33

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

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

谁能给我推荐一些东西?谢谢:)!

检查文本框是否已创建,然后分配其值

您需要

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 的用户控件或第三方控件,那么我们永远不会知道。

if(Page.FindControl("IDofControl") != null)
   //exists
else
   //does no exists