Question

J'ai une vue d'arbre qui peut varier de 1 niveau profond à près de 6. Chaque nœud peut être seulement quelques lettres ou quelques mots totalisant jusqu'à 20-30 caractères.

Comment puis-je trouver la plus grande largeur d'un texte du nœud et d'ajouter son décalage profondeur pour régler la largeur de l'arborescence il ne passe pas par mes frontières?

Si je dois ajouter plus d'informations, laissez-moi savoir.


Edit:

Voici ce que j'ai actuellement obtenu. Je dois régler la largeur des panelLocations sur la charge de la page afin de l'arborescence peut se charger correctement à l'intérieur de celui-ci.

<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>
Était-ce utile?

La solution

Depuis des navigateurs Web rendre différemment le contenu, votre seule option pour trouver le largeur réelle du contenu est d'utiliser le javascript pour parcourir les éléments DOM et mesurer la largeur.

La solution la plus propre et la plus simple consiste à spécifier une largeur suffisamment grande pour l'élément de conteneur, puis spécifier une valeur de overflow:scroll pour permettre à un contenu extra-large pour faire défiler. Il est assez laid pour voir les barres de défilement autour des éléments dans la page, mais lorsque vous utilisez une structure vue arborescente, laid est quelque chose que vous vivez avec.

Autres conseils

Vous pouvez profiter de la méthode measureText, dans l'espace de noms Graphics. Fondamentalement, il vous redonne la taille d'une chaîne censée être rendue dans une certaine police et la taille. Compte tenu d'une largeur constante pour tous les niveaux de intentation (vous savez, les lignes d'arbres, des boutons / icônes: vous pouvez le mesurer statiquement), vous pouvez supposer la largeur nécessaire sera la plus grande:

measuredText + (level * indentationWidth)

HTH!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top