Várias colunas no controle da caixa de listagem
-
27-09-2019 - |
Pergunta
Como posso exibir duas colunas em uma caixa de listagem?
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:
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>