COMO: Dinamicamente criar controles no ASP.NET usando o Visual translation from VPE for Csharp .NET

Traduções deste artigo Traduções deste artigo
ID do artigo: 317794 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Use este guia passo a passo para criar controles para uma página .aspx dinamicamente.

Este artigo demonstra como criar um controle para uma página .aspx dinamicamente. O projeto de exemplo faz o seguinte:
  • Cria dois controles TextBox .
  • Verifica que o conteúdo (TextBox.text) e os atributos de TextBox são salvos em postagens para o servidor.
  • Ilustra o tratamento de eventos que são lançados por um controle criados dinamicamente.

Criar o projeto e o controle estático

  1. Inicie o Microsoft Visual Studio NET..
  2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
  3. Clique em projetos do Visual translation from VPE for Csharp em Tipo de projeto e, em seguida, clique em ASP.NET Web Application em modelos . Nomeie o projeto DynamicCreate .
  4. Abra o arquivo WebForm1.aspx e alterne para o modo de exibição HTML. Substitua o código existente entre as marcas <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. Retorne o modo de design para ver os controles criados estaticamente que o projeto irá usar.

Criar o controle dinâmico e vinculá-lo para cima

  1. No Solution Explorer, clique em Mostrar todos os arquivos para exibir uma lista dos arquivos que estão associados a WebForm1.aspx. Abra o arquivo WebForm1.aspx.cs.
  2. Declare os controles TextBox no arquivo .cs (code-behind). Além disso, declare uma variável do elemento de formulário existente no arquivo.aspx. Atualizar as declarações após a declaração para a classe WebForm1 :
    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 TextBox são inseridas manualmente como seriam se um TextBox foram arrastados para a página .aspx da caixa de ferramentas. No entanto, nesse caso, você criar controles dinamicamente.
  3. Adicione código para criar os controles TextBox dinamicamente. Os controles são criados toda vez que a página é executada. O melhor lugar para isso é na função OnInit que fornece a classe WebForm1 .

    Localize a função OnInit . Expanda o código que é marcado com o "Web Form Designer gerado código" comentário. Modificar a função OnInit para que fique semelhante ao seguinte código:
    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 dinamicamente cria dois controles TextBox , define suas identificações e posições e, em seguida, vincula-los a coleção de Controles de formulário . O código também fios até os eventos TextChanged das caixas de texto a um manipulador ( TextBox_TextChanged ).

    Diferente de definir a posição de TextBox programaticamente e ligando-à coleção de Controles de formulário , você pode adicionar controles de Web Forms painel para .aspx a página e vincular as caixas de texto a os função OnInit , semelhante a este:
    TextBox1 = new TextBox();
        TextBox1.ID = "TextBox1";
    //Form1.Controls.Add(TextBox1);
        Panel1.Controls.Add(TextBox1);
    Observação quando você cria controles dinâmicos em um formulário da Web, os controles devem ser criados e adicionados à coleção controles em OnInit ou em eventos Page_Load . Caso contrário, os controles se comportam inesperadamente.
  4. Inicialize a propriedade Text e 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) ) é definido uma vez. Essas informações são mantidas pela interface IPostBackDataHandler para as caixas de texto, tornando unecessary para redefinir o valor para postagens subseqüentes.
  5. Fornece um manipulador para os eventos TextChanged do controle TextBox . Adicione o seguinte código após o 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 o controle que disparou o evento e relata isso para o usuário usando o controle Label approprite. Observe que essa função manipula o evento TextChanged para ambos os controles TextBox criados dinamicamente. Por padrão, AutoPostBack é false para os controles TextBox . Portanto, alterar o texto nos controles não causa um PostBack para o servidor. No entanto, quando Enviar botão é clicado para lançar o formulário para o servidor, os eventos TextChanged para os controles TextBox são disparados e essa função é chamada.

Salvar, criar e executar o exemplo

Salve e criar o exemplo. Para executá-lo no Visual Studio. NET, clique com o botão direito no arquivo .aspx e, em seguida, clique em View in Browser .

Propriedades

ID do artigo: 317794 - Última revisão: quarta-feira, 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes 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