Pergunta

Como posso exibir duas colunas em uma caixa de listagem?

Foi útil?

Solução

Uma caixa de listagem não foi projetada para exibir dados de várias colunas. Mesmo a versão do Windows Forms não suporta diretamente esse tipo de exibição de dados.

Seus requisitos não são claros, mas o caminho mais simples a seguir seria usar um Gridview ao controle. Ele fornece muitas funcionalidades prontas para uso e você pode expandi -la para mais colunas com muita facilidade. Se você precisar de mais controle sobre a aparência ou funcionalidade, você pode usar um Datalist em vez de.

Para obter a capacidade de rolagem, você pode usar uma rolagem <div> Ou simplesmente use o mecanismo de paginação da Gridview, se for apropriado.

Outras dicas

Você pode alinhar como se os dados estivessem em 2 colunas

new ListItem("blah1".PadRight(10, ' ') + "blah2");

Como mostrado aqui: http://articles.dotheweb.net/post/formatting-Columns-in-a-listbox-of-combobox.aspx

Além disso, você pode rolar o seu próprio com um datalista.

Parece que você deve escrever seu próprio controle ou pode usar o controle da ListView.

Use a visualização da lista, é uma alternativa perfeita para a caixa de listas de várias colunas

Se você deseja usar colunas em uma caixa de listagem, precisará fazê -lo com base no alinhamento.

Por exemplo:

String columns = "{0, -55}{1, -35}{2, -35}";
ListBox1.Items.Add(String.Format(columns, "Filename", "Selected DateModified", "Vault DateModified"));
ListBox1.Items.Add(String.Format(columns, fileName, datetime1, datetime2));  

Saída da minha própria implementação deste código abaixo:

enter image description here

Lembre -se de que a fonte que você usa deve ser uma fonte monospactada; caso contrário, o alinhamento atrapalhará devido ao espaçamento variável entre os caracteres (e isso exagera quanto mais tempo a string).

Como Nick Craver já comentou, o ListView provavelmente não é o controle certo para informações de várias colunas.

Em vez de invadir sua lista para parecer como se tivesse duas colunas, pode ser uma ideia melhor usar um DataGridView. Será mais fácil configurar, formato e seus dados serão mantidos de uma maneira muito mais flexível.

DataGridViewS também suporta Atribuindo listas de objetos como DataSources, se isso facilita as coisas.

Se eu entendi corretamente, você deseja que uma coluna de dados exiba horizontal. Isso pode ser alcançado usando um DataList e tem RepeatDirection Defina como "Hozizontal" com as colunas repetidas especificadas. Por exemplo :

<asp:DataList ID="DataList1" runat="server" RepeatDirection="Horizontal" RepeatColumns="5" CellSpacing="10" >

Vários itens lado a lado são possíveis se você fazer referência ao kit de ferramentas e adicionar a WrappaNeLorientation;) será a lista

1stItem      2ndItem

3rdItem      4thItem .. ect..

ListBox.ItemsPanel>

ItemsPanelTemplate>
    toolkit:WrapPanelOrientation="Horizontal"FlowDirection="LeftToRight"ItemWidth="220"ItemHeight="60"/>

/ItemsPanelTemplate>

/ListBox.ItemsPanel>

/ListBox>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top