Criar colunas na lista e adicionar itens
listView
num windowsForm
e tenho alguns problemas que espero resolver aqui. A primeira coisa é quando estou a criar as colunas. com o código abaixo:
private void initListView()
{
// Add columns
lvRegAnimals.Columns.Add("Id", -3,HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Name", -3, HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Age", -3, HorizontalAlignment.Left);
}
Quando eu executar o programa, o nome das colunas não são visíveis, eles estão todos no canto esquerdo, e eu tenho a "arrastar" para ser capaz de ler o texto. O que fiz de errado?
E finalmente pergunto-me como é que adiciono itens às colunas. Primeiro crio um objecto tipoListViewItem item1 = new ListViewItem(???);
item1.SubItems.Add("text");
cada listViewItem objecta uma coluna ou uma linha? Como é que adiciono linhas de informação? Preciate some help! Obrigado!
4 answers
O teu primeiro problema é que estás a passar -3 para o segundo parâmetro das colunas.Adicionar. Tem de ser -2 para auto-dimensionar a coluna. Fonte: http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.columns.aspx (Veja os comentários no exemplo do código no fundo)
private void initListView()
{
// Add columns
lvRegAnimals.Columns.Add("Id", -2,HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Name", -2, HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Age", -2, HorizontalAlignment.Left);
}
Você também pode usar a outra sobrecarga, adicionar (string). E. g:
lvRegAnimals.Columns.Add("Id");
lvRegAnimals.Columns.Add("Name");
lvRegAnimals.Columns.Add("Age");
Referência para mais sobrecargas: http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.columnheadercollection.aspx
Em segundo lugar, para adicionar itens à lista, terá de criar instâncias da ListViewItem e adicioná-las à colecção de itens da listView. Você vai precisar usar a string [] construtor.
var item1 = new ListViewItem(new[] {"id123", "Tom", "24"});
var item2 = new ListViewItem(new[] {person.Id, person.Name, person.Age});
lvRegAnimals.Items.Add(item1);
lvRegAnimals.Items.Add(item2);
Também pode guardar objectos na propriedade da marca do item.
item2.Tag = person;
E depois podes extraí-lo.
var person = item2.Tag as Person;
Avisa-me se tiveres alguma pergunta e espero que isto ajuda!
lvRegAnimals.View = View.Details;
E depois adicione as suas colunas.
lvRegAnimals.Columns.Add("Id", -2, HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Name", -2, HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Age", -2, HorizontalAlignment.Left);
Espero que isto ajude mais alguém à procura desta resposta no futuro.
Tem de definir a propriedade para o controlo:
listView1.View = View.Details;
listView1.View = View.Details;
listView1.Columns.Add("Target No.", 83, HorizontalAlignment.Center);
listView1.Columns.Add(" Range ", 100, HorizontalAlignment.Center);
listView1.Columns.Add(" Azimuth ", 100, HorizontalAlignment.Center);
Também tive o mesmo problema .. arrastei a coluna para a esquerda .. mas agora está bem .. digamos que tenho 283 * 196 Tamanho de listview ..... Declaramos na coluna largura-2 para largura automática .. Para se encaixar na listview, podemos dividir a largura da listview em 3 partes (83.100.100) ...