0

我有一个树视图,它的深度可以从 1 级到接近 6 级不等。每个节点可以只是几个字母或几个单词,总共最多 20-30 个字符。

如何找到节点文本之一的最大宽度并添加其深度偏移以设置树视图的宽度,使其不会穿过我的边界?

如果我需要添加更多信息,请告诉我。


编辑:

这是我目前所拥有的。我需要在页面加载时设置 panelLocations 的宽度,以便树视图可以在其中正确加载。

<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>
4

2 回答 2

1

由于网络浏览器会以不同的方式呈现内容,因此找出内容真实宽度的唯一选择是使用 javascript 遍历 DOM 元素并测量宽度。

最干净和最简单的解决方案是为容器元素指定一个适当大的宽度,然后指定一个值overflow:scroll以允许滚动超宽内容。在页面中的元素周围看到滚动条非常难看,但是当您使用树视图结构时,您会遇到难看的东西。

于 2009-09-01T15:07:29.037 回答
0

您可以利用 Graphics 命名空间中的 MeasureText 方法。基本上,它会返回应该以某种字体和大小呈现的字符串的大小。给定每个意图级别的恒定宽度(您知道,树线,按钮/图标:您可以静态测量它),您可以假设所需的宽度将是最大的:

measuredText + (level * indentationWidth)

于 2009-08-28T14:08:15.417 回答