Partilhar via


Como: Criar instâncias de controles de usuário do ASP.NET por programação

Da mesma forma que você pode criar por programação uma instância de qualquer de controle de servidor em um página da Web ASP.NET, você pode fazer o mesmo com um controle de usuário.

Para criar uma instância de uma controle de usuário por meio de programação

  1. No controle de usuário, certifique-se de que a diretiva @ Controle contem um atributo ClassName que atribui uma classe ao controle de usuário.

    O exemplo a seguir define o atributo ClassName para tipar fortemente um controle de usuário.

    <%@ Control className="MyUserControl" %>
    
  2. Na página onde você deseja trabalhar com o controle de usuário, crie uma referência para o controle de usuário com a diretiva @ Referência.

    Quando você cria o controle de usuário por programação, o tipo forte para o controle de usuário está disponível para a página da Web ASP.NET somente após ter criado uma referência a ele.Por exemplo, o código a seguir cria uma referência a um controle de usuário criado no arquivo MyUserControl.ascx.

    <%@ Reference Control="MyUserControl.ascx" %>
    
    Observação:

    Você usa o @ Referência quando desejar carregar o controle por meio de programação.Você usa a diretiva @ Register quando você adiciona um controle de usuário à página declarativamente.Para obter detalhes, consulte:Como: Incluir um controle de usuário em uma página da Web do ASP.NET.

  3. Crie uma variável de instância para o controle de usuário, usando o nome da classe do controle.A classe fará parte do namespace ASP.

    Por exemplo, se você desejar criar uma instância de controle de usuário declaradas como classe Spinner, use sintaxe como a seguinte:

    Protected Spinner1 As ASP.Spinner
    
    Protected ASP.Spinner Spinner1;
    
  4. Crie uma instância do controle de usuário no código chamando o método LoadControl.

  5. Atribuia valores de propriedade conforme necessário e, em seguida, adicione o controle à coleção ControlCollection de um recipiente na página, como um controle PlaceHolder.

    Observação:

    Ao adicionar controles ao objeto ControlCollection usando o método Add, eles são colocados na coleção na ordem que eles são processados.Se você quiser adicionar um controle em uma posição específica na coleção, use o método AddAt e especifique o índice do local onde você deseja armazenar o controle.

Exemplo

O exemplo a seguir mostra um página da Web ASP.NET que carrega um controle de usuário por meio de programação.A página inclui uma diretiva @ Reference para especificar o arquivo do controle.O método LoadControl lê o arquivo e instancia-o como um controle que pode ser adicionado à página.

<%@ Page Language="VB" %>
<%@ Reference Control="~\Controls\Spinner.ascx" %>

<script >
Private Spinner1 As ASP.Spinner
Protected Sub Page_Load(ByVal sender As Object, _
        ByVal e As System.EventArgs)
    Spinner1 = CType(LoadControl("~\Controls\Spinner.ascx"), _
        ASP.Spinner)
    ' Set MaxValue first.
    Spinner1.MaxValue = 20
    Spinner1.MinValue = 10
    PlaceHolder1.Controls.Add(Spinner1)
End Sub

Protected Sub Button1_Click(ByVal sender As Object, _
      ByVal e As System.EventArgs)
    Label1.Text = Spinner1.CurrentNumber.ToString()
End Sub
</script>
<html>
<head id="Head1" >
  <title>Load User Control Programmatically</title>
</head>
<body>
  <form id="form1" >
    <div>
      <asp:PlaceHolder runat=server ID="PlaceHolder1" />
      <br />
      <asp:Button ID="Button1"  
        Text="Button" 
        OnClick="Button1_Click" />
      <br />
      <br />
      <asp:Label ID="Label1"  Text=""></asp:Label>
    </div>
  </form>
</body>
</html>
<%@ Page Language="C#" %>
<%@ Reference Control="~/Controls/Spinner.ascx" %>
<script >
private ASP.Spinner Spinner1;
protected void Page_Load(object sender, EventArgs e)
{
    Spinner1 = (ASP.Spinner)LoadControl("~/Controls/Spinner.ascx");
     // Set MaxValue first.
    Spinner1.MaxValue = 20;
    Spinner1.MinValue = 10;
    PlaceHolder1.Controls.Add(Spinner1);
}

protected void Button1_Click(object sender, EventArgs e)
{
    Label1.Text = Spinner1.CurrentNumber.ToString();
}
</script>

<html>
<head id="Head1" >
  <title>Load User Control Programmatically</title>
</head>
<body>
  <form id="form1" >
    <div>
      <asp:PlaceHolder runat=server ID="PlaceHolder1" />
      <br />
      <asp:Button ID="Button1"  
        Text="Button" 
        OnClick="Button1_Click" />
      <br />
      <br />
      <asp:Label ID="Label1"  Text=""></asp:Label>
    </div>
  </form>
</body>
</html>

Consulte também

Conceitos

Visão geral sobre controles de usuário ASP.NET