Como: Alterar o Layout de um controle DataRepeater (Visual Studio)

O DataRepeater controle pode ser exibido em um vertical (itens de rolagem vertical) ou o horizontal (itens de rolagem horizontal) orientação. Você pode alterar a orientação em tempo de design ou em tempo de execução alterando a LayoutStyle propriedade. Se você alterar o LayoutStyle a propriedade em tempo de execução, você talvez também queira redimensionar o ItemTemplate e reposicionar os controles filho.

ObservaçãoObservação

Se você reposicionar controles na ItemTemplate em tempo de execução, você precisará chamar o BeginResetItemTemplate e EndResetItemTemplate métodos no início e no final do bloco de código que reposiciona controles.

Para alterar o layout em tempo de design

  1. No Windows Forms Designer, selecione o DataRepeater de controle.

    ObservaçãoObservação

    Você deve selecionar a borda externa do DataRepeater o controle clicando na região inferior do controle, não na parte superior ItemTemplate região.

  2. Na janela Properties, defina a LayoutStyle a propriedade para um Vertical ou Horizontal.

Para alterar o layout em tempo de execução

  1. Adicione o seguinte código para um botão ou menu Click manipulador de eventos:

    ' Switch the orientation.
    If DataRepeater1.LayoutStyle =
     PowerPacks.DataRepeaterLayoutStyles.Vertical Then
        DataRepeater1.LayoutStyle =
         PowerPacks.DataRepeaterLayoutStyles.Horizontal
    Else
        DataRepeater1.LayoutStyle =
         PowerPacks.DataRepeaterLayoutStyles.Vertical
    End If
    
    // Switch the orientation.
    if (dataRepeater1.LayoutStyle == DataRepeaterLayoutStyles.Vertical)
    {
        dataRepeater1.LayoutStyle = DataRepeaterLayoutStyles.Horizontal;
    }
    else
    {
        dataRepeater1.LayoutStyle = DataRepeaterLayoutStyles.Vertical;
    }            
    
  2. Na maioria dos casos, você desejará adicionar código semelhante ao mostrado na seção exemplo para redimensionar o ItemTemplate e reorganizar os controles para ajustar a nova orientação.

Exemplo

O exemplo a seguir mostra como responder ao LayoutStyleChanged o evento em um manipulador de eventos. Este exemplo requer que você tenha um DataRepeater controle chamado DataRepeater1 em um formulário e que seu ItemTemplate conter dois TextBox controles denominados TextBox1 e TextBox2.

Private Sub DataRepeater1_LayoutStyleChanged(ByVal sender As Object,
 ByVal e As System.EventArgs) Handles DataRepeater1.LayoutStyleChanged
    ' Call a method to re-initialize the template.
    DataRepeater1.BeginResetItemTemplate()
    If DataRepeater1.LayoutStyle =
     PowerPacks.DataRepeaterLayoutStyles.Vertical Then
        ' Change the height of the template and rearrange the controls.
        DataRepeater1.ItemTemplate.Height = 150
        DataRepeater1.ItemTemplate.Controls(TextBox1.Name).Location =
         New Point(20, 40)
        DataRepeater1.ItemTemplate.Controls(TextBox2.Name).Location =
         New Point(150, 40)
    Else
        ' Change the width of the template and rearrange the controls.
        DataRepeater1.ItemTemplate.Width = 150
        DataRepeater1.ItemTemplate.Controls(TextBox1.Name).Location =
         New Point(40, 20)
        DataRepeater1.ItemTemplate.Controls(TextBox2.Name).Location =
         New Point(40, 150)
    End If
    ' Apply the changes to the template.
    DataRepeater1.EndResetItemTemplate()
End Sub
private void dataRepeater1_LayoutStyleChanged_1(object sender, EventArgs e)
{
    // Call a method to re-initialize the template.
    dataRepeater1.BeginResetItemTemplate();
    if (dataRepeater1.LayoutStyle == DataRepeaterLayoutStyles.Vertical)
    // Change the height of the template and rearrange the controls.
    {
        dataRepeater1.ItemTemplate.Height = 150;
        dataRepeater1.ItemTemplate.Controls["TextBox1"].Location = new Point(20, 40);
        dataRepeater1.ItemTemplate.Controls["TextBox2"].Location = new Point(150, 40);
    }
    else
    {
        // Change the width of the template and rearrange the controls.
        dataRepeater1.ItemTemplate.Width = 150;
        dataRepeater1.ItemTemplate.Controls["TextBox1"].Location = new Point(40, 20);
        dataRepeater1.ItemTemplate.Controls["TextBox2"].Location = new Point(40, 150);
    }
    // Apply the changes to the template.
    dataRepeater1.EndResetItemTemplate();
}

Consulte também

Tarefas

Solucionando problemas de controle DataRepeater (Visual Studio)

Como: Alterar a aparência de um controle DataRepeater (Visual Studio)

Referência

DataRepeater

LayoutStyle

BeginResetItemTemplate

EndResetItemTemplate

Conceitos

Introdução ao controle DataRepeater (Visual Studio)