COMO: Criar controles dinamicamente no ASP.NET com o Visual Basic .NET

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

Neste artigo

Sumário

Este artigo passo a passo descreve como criar controles para uma página da Web ASPX dinamicamente.

O projeto de exemplo faz o seguinte:
  • Ele cria dois controles TextBox .
  • Ele verifica que o conteúdo de TextBox (TextBox.text) e atributos são salvos em postagens para o servidor.
  • Ele descreve como os eventos que são lançados por um controle criado dinamicamente são manipulados.

Criar o projeto e o controle estático

  1. No Visual Studio. NET, crie um novo projeto de Web usando o Visual Basic. NET. Nomeie o projeto DynamicCreate .
  2. Abra o arquivo WebForm1.aspx e, em seguida, alterne para modo de exibição de HTML. Insira o seguinte código entre o <html> marca e o </html> marca:
    <HEAD>
        <title>WebForm1</title>
        <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.0">
        <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </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>
    					
  3. Alterne para modo de design para ver os controles criados estaticamente que o projeto irá usar.

Criar o controle dinâmico e ligá-lo

  1. No Solution Explorer, clique em Mostrar todos os arquivos . A lista de arquivos que estão associados a WebForm1.aspx é exibida. Abra WebForm1.aspx.vb.
  2. Declare os controles TestBox o arquivo .vb (code-behind). Além disso, declare uma variável do elemento de formulário existente no arquivo.aspx. Atualizar as declarações que seguem a declaração para a classe pública WebForm1 :
    Public Class WebForm1
        Inherits System.Web.UI.Page
        Protected WithEvents Button1 As System.Web.UI.WebControls.Button
        Protected WithEvents Label4 As System.Web.UI.WebControls.Label
        Protected WithEvents Label3 As System.Web.UI.WebControls.Label
        Protected WithEvents Label2 As System.Web.UI.WebControls.Label
        Protected WithEvents Label1 As System.Web.UI.WebControls.Label
    
        ' Added by hand for access to the form.
        Protected Form1 As System.Web.UI.HtmlControls.HtmlForm
    
        ' Added by hand; will create instance in OnInit.
        Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
        Protected WithEvents TextBox2 As System.Web.UI.WebControls.TextBox
    						
    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 Page_Init que fornece a classe WebForm1 . Localize a função Page_Init . Expanda o código que é marcado com o comentário "Web Form Designer gerado código." Modificar funções Page_Init , para que eles aparecem semelhantes à seguinte: Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        ' Create dynamic controls here.
        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)
    
        ' CODEGEN: The Web Form Designer requires this method call.
        ' Do not modify it by using the code editor.
        InitializeComponent()
    End Sub
    						
    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 . Você pode também adicionar controles de Web Forms painel a página ASPX e vincular as caixas de texto a esses controles na função Page_Init , como no exemplo a seguir:
        TextBox1 = New TextBox()
        TextBox1.ID = "TextBox1"
    ' comment   add command  the Form Controls collection as follows
    '   Form1.Controls.Add(TextBox1)'
        Panel1.Controls.Add(TextBox1)
    					
    Observação quando você cria controles em um formulário da Web dinâmicos, você deve criar os controles e adicioná-los à coleção de controles no manipulador de eventos Page_Init ou manipulador de eventos Page_Load . Caso contrário, os controles podem não se comportar conforme o esperado.
  4. Inicialize a propriedade Text para as caixas de texto. Modificar a função Page_Load existente: Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load não se IsPostBack E
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not IsPostBack Then
            ' Set the initial properties for the text boxes.
            TextBox1.Text = "TextBox1"
            TextBox2.Text = "TextBox2"
        End If
    End Sub
    						
    você deve definir o valor ( Não se IsPostBack ) inicial das caixas de texto somente uma vez. A interface IPostBackDataHandler para as caixas de texto mantém essas informações. Não é necessário redefinir o valor para postagens posteriores.
  5. Fornece um manipulador para os eventos de TextChanged TextBox . Adicione o seguinte código após a função Page_Load :
    Private Sub TextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged, TextBox2.TextChanged
        Dim txtBoxSender As TextBox
        Dim strTextBoxID As String
    
        txtBoxSender = CType(sender, TextBox)
        strTextBoxID = txtBoxSender.ID
    
        Select Case strTextBoxID
            Case "TextBox1"
                Label3.Text = "TextBox1 text was changed"
    
            Case "TextBox2"
                Label4.Text = "TextBox2 text was changed"
        End Select
    End Sub
    						
    este código verifica o controle que disparou o evento e relata isso para o usuário usando o controle de rótulo apropriado. 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, se um usuário alterar o texto nos controles, essa ação não causa um PostBack para o servidor. No entanto, quando o usuário clica em Enviar para enviar o formulário para o servidor, essa ação aciona os eventos TextChanged para os controles TextBox e, em seguida, essa função é chamada.

Salvar, criar e depois executar o exemplo

Salve e, em seguida, criar o exemplo. Para executar o exemplo 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: 317515 - Última revisão: quarta-feira, 11 de fevereiro de 2004 - Revisão: 4.4
A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
Palavras-chave: 
kbmt kbctrlcreate kbevent kbhowtomaster kbservercontrols kbwebforms KB317515 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: 317515

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