Pergunta

Eu tenho uma exibição de árvore que pode ser em qualquer lugar a partir de 1 nível profundo para quase 6. Cada nó pode ser apenas algumas letras ou um par de palavras, totalizando até 20-30 caracteres.

Como faço para encontrar a maior largura de um texto do nó e adicionar a sua profundidade de deslocamento para definir a largura do treeview para que ele não passar por minhas fronteiras?

Se eu precisar adicionar mais informações, deixe-me saber.


Editar:

Aqui está o que eu tenho atualmente. Eu preciso definir a largura das panelLocations no carregamento da página de modo de exibição de árvore pode carregar corretamente dentro do mesmo.

<asp:Panel ID="panelLocations" runat="server" style="position:absolute;border:solid 1px #E0E0E0;padding:10px 5px 5px 10px;background-color:#F7F7F7;width:350px;display:none;" >
    Search: <asp:TextBox ID="textboxLocationSearch" runat="server" AutoCompleteType="disabled" ToolTip="To find a store, type the 4 digit store number (e.g. 0001)" />

    <asp:Button ID="buttonFindLocation" runat="server" Text="Find" OnClick="buttonFindLocation_Click" OnClientClick="LocationSelected();" style="width:60px;"/>

    <input type="button" value="Cancel" onclick="HideLocations();" style="width:60px;"/>

    <hr />

    <asp:TreeView ID="TreeViewLocations" runat="server" OnSelectedNodeChanged="TreeViewLocations_SelectedNodeChanged" NodeIndent="10"></asp:TreeView>
</asp:Panel>
Foi útil?

Solução

Uma vez que os navegadores web irá processar o conteúdo de forma diferente, a sua única opção para descobrir o real largura do conteúdo é usar javascript para atravessar os elementos DOM e medir a largura.

A solução mais limpa e mais simples é o de especificar uma largura suficientemente grande para o elemento de recipiente, em seguida, especificar um valor de overflow:scroll para permitir que o conteúdo extra-grande para ser rolada. É muito feio ver barras de rolagem em torno dos elementos na página, mas quando você estiver usando uma estrutura de árvore-view, feio é algo que você viver.

Outras dicas

Você pode tirar vantagem do método MeasureText, no namespace Graphics. Basicamente, ele lhe dá de volta o tamanho de uma string deveria ser processado em um determinado tipo de letra e tamanho. Dada uma largura constante para cada nível intentation (você sabe, linhas de árvore, botões / ícones: você pode medir-lo estaticamente), você pode assumir necessária largura será o maior de:

measuredText + (level * indentationWidth)

HTH!

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