Usar o Visual C# para associar um controle DataGrid a uma matriz de objetos ou estruturas

Este artigo fornece informações sobre como associar uma matriz de objetos a um controle DataGrid.

Versão original do produto: Visual C#
Número de KB original: 315786

Resumo

O exemplo neste artigo consiste em um formulário windows com um controle DataGrid para exibir valores de propriedade do objeto e quatro botões de comando para navegar pelas linhas do controle DataGrid.

Requisitos

Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:

  • Conceitos de programação do Visual C#
  • Visual C# .NET

Projetar a classe

Uma classe que deve estar associada a um controle deve ter acessadores de propriedade. Qualquer propriedade a ser vinculada deve ter o método de propriedade Set e o método de propriedade Get . A classe de exemplo usada neste artigo tem três membros. Somente um membro é descrito neste artigo. Um construtor parametrizado também foi fornecido. No entanto, não é um requisito.

public class guitar
{
    private string make;
    private string model;
    private short year;

    public guitar()
    {
    }

    public guitar(string make, string model, short year)
    {
        Make=make;
        Model=model;
        Year=year;
    }

    public string Make
    {
        get
        {
            return make;
        }
        set
        {
            make = value;
        }
    }
}

Adicionar instâncias de classe a uma matriz

Para criar instâncias e adicioná-las à matriz, siga estas etapas:

  1. Declare uma matriz.

  2. Crie instâncias da classe e adicione as instâncias à matriz.

    private guitar[] arr=new guitar[3];
    arr[0] = new guitar("Gibson", "Les Paul", 1958);
    arr[1] = new guitar("Fender", "Jazz Bass", 1964);
    arr[2] = new guitar("Guild", "Bluesbird", 1971);
    

Associar a matriz ao controle DataGrid

Depois que a matriz for preenchida, defina a propriedade DataSource do controle DataGrid como a matriz. As colunas no controle DataGrid são preenchidas com base nas propriedades para as quais existem os acessadores de propriedade no escopo.

dataGrid1.DataSource=arr;

Fornecer um meio de navegar pela matriz

Você pode usar CurrencyManager para navegar pela matriz. Para fazer isso, associe-se CurrencyManager ao BindingContext controle, nesse caso, à matriz.

private CurrencyManager currencyManager=null;
currencyManager = (CurrencyManager)dataGrid1.BindingContext[arr];

A CurrencyManager classe tem uma Position propriedade que você pode manipular para iterar sobre os membros da matriz. Ao adicionar ou subtrair o valor atual de Position, você pode navegar pelas linhas do DataGrid controle.

//Move forward one element.
currencyManager.Position++;
//Move back one element.
currencyManager.Position--;
//Move to the beginning.
currencyManager.Position = 0;
//Move to the end.
currencyManager.Position = arr.Length - 1;

Exemplo passo a passo

  1. No Visual C# .NET, crie um novo projeto do Aplicativo Windows. O Form1 é criado por padrão.

  2. Adicione uma classe ao projeto.

  3. Substitua o código no Class1.cs pelo código a seguir.

    public class guitar
    {
        private string make;
        private string model;
        private short year;
    
        public guitar()
        {
        }
    
        public guitar(string Make, string Model, short Year)
        {
            make=Make;
            model=Model;
            year=Year;
        }
    
        public string Make
        {
            get
            {
                return make;
            }
            set
            {
                make = value;
            }
        }
    
        public string Model
        {
            get
            {
                return model;
            }
            set
            {
                model = value;
            }
        }
    
        public short Year
        {
            get
            {
                return year;
            }
            set
            {
                year = value;
            }
        }
    }
    
  4. Feche a janela de código Class1.cs e, em seguida, alterne para o Formulário Designer.

  5. Adicione um controle DataGrid ao Form1. Dimensione o controle DataGrid para acomodar quatro colunas e três linhas.

  6. Adicione quatro controles button ao Form1 e, em seguida, organize os botões horizontalmente.

  7. Altere a propriedade Texto de Button1 para Avançar.

  8. Altere a propriedade Texto de Button2 para Anterior.

  9. Altere a propriedade Text de Button3 para First.

  10. Altere a propriedade Texto de Button4 para Last.

  11. Adicione o seguinte código à classe Form1.

    private guitar[] arr=new guitar[3];
    private CurrencyManager currencyManager=null;
    
  12. Alterne para o Formulário Designer, clique com o botão direito do mouse no formulário e clique em Propriedades.

  13. Clique no ícone Eventos e clique duas vezes no evento de carga para adicionar o Form1_Load evento ao código.

  14. Adicione o código a seguir ao Form1_Load evento.

    arr[0] = new guitar("Gibson", "Les Paul", 1958);
    arr[1] = new guitar("Fender", "Jazz Bass", 1964);
    arr[2] = new guitar("Guild", "Bluesbird", 1971);
    currencyManager = (CurrencyManager)dataGrid1.BindingContext[arr];
    dataGrid1.DataSource=arr;
    
  15. Alterne para exibir o Formulário Designer.

  16. Clique duas vezes em Avançar e adicione o código a seguir ao button1_Click evento.

    currencyManager.Position++;
    
  17. Clique duas vezes em Anterior e adicione o código a seguir ao button2_Click evento.

    currencyManager.Position--;
    
  18. Clique duas vezes em Primeiro e adicione o código a seguir ao button3_Click evento.

    currencyManager.Position = 0;
    
  19. Clique duas vezes em Último e adicione o código a seguir ao button4_Click evento.

    currencyManager.Position = arr.Length - 1;
    
  20. Crie e execute o projeto.

  21. Clique nos botões de comando para se mover entre as linhas do controle DataGrid.

    Observação

    Você pode editar os valores dos objetos, se desejar.

Usar uma estrutura em vez de uma classe

As regras para associar uma estrutura são as mesmas que as regras para associação de um objeto. A propriedade que é acessador de membros é necessária. Uma estrutura criada para essa finalidade se assemelha a uma classe.

Para associar a uma matriz de estruturas, siga estas etapas.

  1. Alterar a definição do módulo de classe Class1.cs no exemplo de

    public class guitar
    

    para o exemplo a seguir:

    public struct guitar
    
  2. Comente o construtor padrão da seguinte maneira.

    //public guitar()
    //{
    //}
    
  3. Crie e execute o programa de exemplo novamente e verifique se ele funciona com uma matriz de estruturas.

Referências

Para obter mais informações, confira o tópico Consumidores de Dados sobre Windows Forms no Visual Studio .NET Online Help.