0

1 レベルからほぼ 6 レベルまでのツリー ビューがあります。各ノードは、数文字または合計 20 ~ 30 文字の単語で構成できます。

ノードのテキストの 1 つの最大幅を見つけ、その深さオフセットを追加して、ツリービューの幅を設定し、境界線を通過しないようにするにはどうすればよいですか?

さらに情報を追加する必要がある場合は、お知らせください。


編集:

これが私が現在持っているものです。ページの読み込み時に 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

Web ブラウザーはコンテンツを異なる方法でレンダリングするため、コンテンツの実際の幅を確認する唯一のオプションは、javascript を使用して DOM 要素をトラバースし、幅を測定することです。

最もクリーンでシンプルな解決策は、コンテナ要素に適切な幅を指定してから、幅overflow:scrollの広いコンテンツをスクロールできるように の値を指定することです。ページ内の要素の周りにスクロール バーが表示されるのはかなり見苦しいものですが、ツリー ビュー構造を使用している場合は、その見苦しさがつきものです。

于 2009-09-01T15:07:29.037 に答える
0

Graphics 名前空間で MeasureText メソッドを利用できます。基本的に、特定のフォントとサイズでレンダリングされるはずの文字列のサイズを返します。すべてのインテント レベル (ツリー ライン、ボタン/アイコン: 静的に測定できます) の幅が一定である場合、必要な幅は次のうち最大のものになると想定できます。

measuredText + (level * indentationWidth)

チッ!

于 2009-08-28T14:08:15.417 に答える