Compartilhar via


Controle de ListObject

O ListObject é uma lista que expõe eventos de controle e pode ser vinculado a dados. Quando você adiciona uma lista para uma planilha, o Visual Studio cria uma ListObject o controle que você pode programar diretamente, sem ter de atravessar o modelo de objeto do Excel de Microsoft Office.

Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de nível de aplicativo para Excel 2007 e Excel 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

Criando o controle.

Em projetos de nível de documento, você pode adicionar ListObject controles de uma planilha em tempo de design ou em tempo de execução. Em projetos de nível de aplicativo, você pode adicionar ListObject controles de planilhas somente no tempo de execução. For more information, see Como: Adicionar controles de ListObject às planilhas.

ObservaçãoObservação

Por padrão, a lista criada dinamicamente objetos não são persistentes na planilha como controles de host quando a planilha está fechada. For more information, see Adicionar controles a documentos do Office em tempo de execução.

Binding Data to the Control

A ListObject controle suporta vinculação de dados simples e complexos. O ListObject controle pode ser vinculado a uma fonte de dados usando o DataSource e DataMember Propriedades em tempo de design ou o SetDataBinding método no tempo de execução.

ObservaçãoObservação

O ListObject é atualizado automaticamente quando ele está vinculado a uma fonte de dados, como um DataTable, que gera eventos quando as alterações de dados. Se você vincular a ListObject a uma fonte de dados não dispara eventos quando os dados forem alterados, você deve chamar o RefreshDataRow ou RefreshDataRows método para atualizar o ListObject.

Quando você adiciona um ListObject a uma célula de planilha, mapeando um elemento do esquema de repetição para que a célula, Visual Studio mapeia automaticamente o ListObject para o dataset gerado. No entanto, o ListObject não automaticamente é vinculado a dados. Você pode adotar medidas para vincular o ListObject ao conjunto de dados em tempo de design ou em tempo de execução em um projeto de nível de documento. Você pode vincular programaticamente o ListObject ao conjunto de dados em tempo de execução em um nível de aplicativo add-in.

Como os dados são separados da ListObject, você deve adicionar e remover dados através do dataset acoplado e não diretamente a ListObject. Se os dados no dataset acoplado são atualizados por meio de qualquer mecanismo de ListObject controle automaticamente reflete as alterações. For more information, see A ligação de dados a controles em soluções do Office.

Você pode preencher rapidamente um ListObject controle pela vinculação do ListObject a uma fonte de dados. Se você editar os dados em um data-bound ListObject, as alterações são feitas automaticamente na fonte de dados, como bem. Se você deseja preencher um ListObject e permitir que o usuário altere os dados a ListObject sem modificar a fonte de dados, você pode usar o Disconnect método para desanexar o ListObject da fonte de dados. For more information, see Como: Controles de ListObject preenchimento com dados.

ObservaçãoObservação

Ligação de dados não é suportada em sobreposição ListObject controles.

Melhorar o desempenho de ListObject controles

Ler um arquivo XML em um data-bound ListObject controle tende a ser mais lento se você vincula o controle em primeiro lugar e em seguida, chame ReadXml para preencher o dataset. Para melhorar o desempenho, chame ReadXml antes de você ligar o controle.

Desconectar o ListObject controles da fonte de dados

Depois de preencher um ListObject controle com dados vinculando-o a uma fonte de dados, você poderá desconectá-lo para que as modificações feitas nos dados do objeto de lista não afetam a fonte de dados. For more information, see Como: Controles de ListObject preenchimento com dados.

Restaurando de coluna e linha de ordem

Quando você vincular dados a uma ListObject controle foi adicionado a um documento em tempo de design Visual Studio mantém controle sobre a ordem de coluna e linha sempre que a pasta de trabalho for salva. Se um usuário move o ListObject colunas ou linhas durante o tempo de execução, a nova ordem é preservada na próxima vez em que a pasta de trabalho é aberta e o ListObject controle vincula novamente a fonte de dados.

Se você deseja restaurar o ListObject para sua coluna original e a ordem da linha, você pode chamar o ResetPersistedBindingInformation método. Esse método remove as propriedades de documento personalizadas relacionadas à coluna e a ordem da linha especificada ListObject. Chamar esse método a partir do Shutdown evento da pasta de trabalho, se não quiser preservar a ordem de coluna e linha da ListObject.

Formatting

Formatação que pode ser aplicado a uma Microsoft.Office.Interop.Excel.ListObject pode ser aplicado a uma Microsoft.Office.Tools.Excel.ListObject de controle. Isso inclui as bordas, fontes, formato de número e estilos. Os usuários finais podem reorganizar as colunas em uma data-bound ListObject, e essas alterações serão persistentes com o documento, fornecido o ListObject foi adicionado ao documento em tempo de design. Na próxima vez em que o documento for aberto, o objeto da lista será ligado à mesma fonte de dados, mas a ordem das colunas refletirá os usuários alterações.

Adicionando e removendo colunas em tempo de execução

Não é possível adicionar ou remover colunas em uma data-bound manualmente ListObject o controle em tempo de execução. Se um usuário final tentar excluir uma coluna, imediatamente será restaurado e quaisquer colunas adicionadas serão removidas. Portanto, é importante escrever código para explicar aos usuários por que eles não podem executar essas ações em um ListObject que está vinculado a dados. Visual Studio fornece vários eventos em um ListObject relacionados à vinculação de dados. Por exemplo, você pode usar o OriginalDataRestored evento para avisar os usuários que os dados que eles tentaram excluir não podem ser excluídos e foi restaurados.

Adicionando e removendo linhas em tempo de execução

Você pode adicionar e remover linhas em uma data-bound manualmente ListObject de controle, desde que a fonte de dados permite a adição de novas linhas e não é somente leitura. Você pode escrever código contra eventos como a BeforeAddDataBoundRow para validar os dados. For more information, see Como: Validar dados quando uma nova linha é adicionada a um controle de ListObject.

Às vezes, a relação do objeto list à fonte de dados faz com que os erros de rotina. Por exemplo, você pode mapear as colunas que você deseja que apareça na ListObject, portanto, se você omitir as colunas que tenham restrições, como, por exemplo, um campo que não pode aceitar valores nulos, os erros são gerados sempre que uma linha é criada. Você pode escrever código para adicionar os valores ausentes em um manipulador de eventos para o ErrorAddDataBoundRow de evento.

A renomeação de controles de ListObject no Excel

Excel permite aos usuários alterar o nome das tabelas do Excel em tempo de execução usando o Design guia. No entanto, o ListObject controle não suporta esse recurso. Se um usuário tentar renomear uma tabela do Excel que corresponde a um ListObject, o nome da tabela do Excel será revertida automaticamente para o nome original quando a pasta de trabalho é salvo.

Events

Os eventos a seguir estão disponíveis para o ListObject controle:

Consulte também

Tarefas

Como: Adicionar controles de ListObject às planilhas

Como: Redimensionar controles de ListObject

Como: Validar dados quando uma nova linha é adicionada a um controle de ListObject

Como: Mapear as colunas de ListObject para dados

Como: Controles de ListObject preenchimento com dados

Como: Preencher as planilhas com dados de um banco de dados.

Conceitos

Automatizar o Excel usando o Extended objetos

Estendendo os documentos do Word e pastas de trabalho do Excel em suplementos de nível de aplicativo em tempo de execução

Adicionar controles a documentos do Office em tempo de execução

Limitações de programação de itens de Host e controles de Host

Outros recursos

Exemplos de desenvolvimento do Office e Walkthroughs

A ligação de dados a controles em soluções do Office

Controles em documentos do Office