COMO: Criar dinamicamente controlos no ASP.NET utilizando o Visual C# .NET

Traduções de Artigos Traduções de Artigos
Artigo: 317794 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Utilize este guia passo-a-passo para criar dinamicamente controlos para uma página .aspx.

Este artigo demonstra como criar um controlo para uma página .aspx dinamicamente. O projecto de exemplo efectua as seguintes acções:
  • Cria dois controlos de caixa de texto .
  • Verifica que o conteúdo (TextBox.text) e os atributos de caixa de texto são guardados em envios para o servidor.
  • Ilustra o tratamento de eventos registados por um controlo criado dinamicamente.

Criar o projecto e controlo estático

  1. Inicie o Microsoft Visual Studio NET..
  2. No menu ficheiro , aponte para Novo e, em seguida, clique em projecto .
  3. Clique em Visual C# Projects em Tipo de projecto e, em seguida, clique em ASP.NET Web Application em modelos . Nome do projecto DynamicCreate .
  4. Abra o ficheiro WebForm1.aspx e mude para a vista de HTML. Substitua o código existente entre as tags <html> e </html> com o seguinte código:
    <HEAD>
        <title>WebForm1</title>
        <meta content="Microsoft Visual Studio 7.0" name="GENERATOR">
        <meta content="C#" name="CODE_LANGUAGE">
        <meta content="JavaScript" name="vs_defaultClientScript">
        <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
        <form id="Form1" method="post" runat="server">
            <asp:Button id="Button1" style="Z-INDEX: 100; LEFT: 23px; POSITION: absolute; TOP: 108px" runat="server" Text="Submit" Height="27px" Width="100px"></asp:Button>
            <asp:Label id="Label4" style="Z-INDEX: 105; LEFT: 23px; POSITION: absolute; TOP: 197px" runat="server" Width="368px" EnableViewState="False"></asp:Label>
            <asp:Label id="Label3" style="Z-INDEX: 104; LEFT: 23px; POSITION: absolute; TOP: 163px" runat="server" Width="368px" EnableViewState="False"></asp:Label>
            <asp:Label id="Label2" style="Z-INDEX: 102; LEFT: 23px; POSITION: absolute; TOP: 60px" runat="server" Width="86px" Height="19px"> TextBox2:</asp:Label>
            <asp:Label id="Label1" style="Z-INDEX: 101; LEFT: 23px; POSITION: absolute; TOP: 28px" runat="server" Width="86" Height="19"> TextBox1:</asp:Label></form>
    </body>
  5. Devolve a vista de estrutura para ver os controlos criados estaticamente que o projecto irá utilizar.

Criar o controlo dinâmico e ligar-

  1. No Solution Explorer, clique em Mostrar todos os ficheiros para apresentar uma lista dos ficheiros que estão associados a WebForm1.aspx. Abra o ficheiro WebForm1.aspx.cs.
  2. Declare os controlos de caixa de texto no ficheiro .cs (código subjacente). Além disso, declare uma variável para o elemento de formulário existente no ficheiro .aspx. Actualizar as declarações seguindo a declaração da classe de WebForm1 : classe pública
    public class WebForm1 : System.Web.UI.Page
    {
    	protected System.Web.UI.WebControls.Label Label1;
    	protected System.Web.UI.WebControls.Label Label2;
    	protected System.Web.UI.WebControls.Label Label3;
    	protected System.Web.UI.WebControls.Label Label4;
    	protected System.Web.UI.WebControls.Button Button1;
    
    	// Added by hand for access to the form.
    	protected System.Web.UI.HtmlControls.HtmlForm Form1;
    	
    	// Added by hand; will create instance in OnInit.
    	protected System.Web.UI.WebControls.TextBox TextBox1;
    	protected System.Web.UI.WebControls.TextBox TextBox2;
    declarações a caixa de texto são introduzidas manualmente como seriam se uma caixa de texto foram arrastados da caixa de ferramentas para a página .aspx. No entanto, neste caso, pode criar os controlos dinamicamente.
  3. Adicione código para criar dinamicamente os controlos de caixa de texto . Os controlos são criados sempre que a página é executada. O melhor ponto para o fazer é na função OnInit que fornece a classe de WebForm1 .

    Localize a função OnInit . Expanda o código que está marcado com o "formulário Web Designer gerado código" comentário. Modificar a função OnInit para que é semelhante ao seguinte código: substituição
    override protected void OnInit(EventArgs e)
    {
        // Create dynamic controls here.
        // Use "using System.Web.UI.WebControls;"
        TextBox1 = new TextBox();
        TextBox1.ID = "TextBox1";
        TextBox1.Style["Position"] = "Absolute";
        TextBox1.Style["Top"] = "25px";
        TextBox1.Style["Left"] = "100px";
        Form1.Controls.Add(TextBox1);
    
        TextBox2 = new TextBox();
        TextBox2.ID = "TextBox2";
        TextBox2.Style["Position"] = "Absolute";
        TextBox2.Style["Top"] = "60px";
        TextBox2.Style["Left"] = "100px";
        Form1.Controls.Add(TextBox2);
    
        this.TextBox1.TextChanged += new System.EventHandler(this.TextBox_TextChanged);
        this.TextBox2.TextChanged += new System.EventHandler(this.TextBox_TextChanged);
    
        // 
        // CODEGEN: This call is required by the ASP.NET Web Form Designer.
        // 
        InitializeComponent();
        base.OnInit(e);
    }
    este código cria dois controlos de caixa de texto de forma dinâmica, define os respectivos ID e a posição e, em seguida, liga-los à colecção de Controlos de formulário . O código de fios também os eventos TextChanged das caixas de texto para uma rotina de tratamento ( TextBox_TextChanged ).

    Diferente de definir programaticamente a posição da caixa de texto e vinculá-lo a colecção de Controlos de formulário , pode adicionar controlos de formulários da Web painel para o .aspx página e ligue as caixas de texto na função OnInit , semelhante a esta:
    TextBox1 = new TextBox();
        TextBox1.ID = "TextBox1";
    //Form1.Controls.Add(TextBox1);
        Panel1.Controls.Add(TextBox1);
    NOTA: ao criar controlos num formulário Web dinâmicos, os controlos tem de ser criados e adicionados à colecção de controlos em OnInit ou em eventos Page_Load . Comportam-caso contrário, os controlos se inesperadamente.
  4. Inicialize a propriedade de texto e os estilos para as caixas de texto. Modifique a função Page_Load existente da seguinte forma:
    private void Page_Load(object sender, System.EventArgs e)
    {
        if(!IsPostBack)
        {
            // Set the initial properties for the text boxes.
            TextBox1.Text = "TextBox1";
            TextBox2.Text = "TextBox2";
        }
    }
    o valor inicial de caixas de texto ( if(!IsPostBack) ) estiver definido uma vez. Esta informação é mantida por interface de caixas de texto, tornando unecessary para repor o valor para mensagens subsequentes IPostBackDataHandler .
  5. Fornece uma rotina de tratamento para os eventos TextChanged do controlo de caixa de texto . Adicione o seguinte código depois do corpo da função Page_Load :
    private void TextBox_TextChanged(object sender, System.EventArgs e)
    {
        TextBox txtBoxSender = (TextBox)sender;
        string strTextBoxID = txtBoxSender.ID;
    
        switch(strTextBoxID)
        {
            case "TextBox1":
                Label3.Text = "TextBox1 text was changed";
                break;
            case "TextBox2":
                Label4.Text = "TextBox2 text was changed";
                break;
        }
    }
    este código verifica para ver qual o controlo que disparou o evento e, em seguida, comunica este ao utilizador utilizando approprite etiqueta de controlo. Repare que esta função processa o evento TextChanged para ambos os controlos de caixa de texto criado dinamicamente. Por predefinição, o AutoPostBack é false para os controlos de caixa de texto . Assim, alterar o texto nos controlos não causa um PostBack ao servidor. No entanto, quando Submeter botão é clicado para enviar o formulário para o servidor, os eventos TextChanged os controlos de caixa de texto estão activados e chama esta função.

Guardar, criar e executar o exemplo

Guardar e criar o exemplo. Para executá-la no Visual Studio. NET, clique com o botão direito do rato no ficheiro .aspx e, em seguida, clique em View in browser .

Propriedades

Artigo: 317794 - Última revisão: 25 de junho de 2003 - Revisão: 4.4
A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
Palavras-chave: 
kbmt kbctrlcreate kbevent kbhowtomaster kbservercontrols kbwebforms KB317794 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 317794

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com