2012-01-07 4 views
0

私はいくつかのノードを持つツリービューコントロールを持っています。私はラベルコントロールのようにツリービューノードにAuto Ellipsisプロパティを持っています。私はGoogleをしましたが、このタスクを達成するための関連情報や方法はありません。 私はC#をプログラミング言語として、そして.net framework 3.5をプラットフォームとして使用しています。 WPFではなくWindowsフォームでプログラムを作っています。おかげさまで Auto Ellipsisプロパティのためのvc#のTreeviewノード

答えて

2

あなたはそうです、そのプロパティは存在しません。 TreeViewコントロールは、いずれかのノードのラベルがコントロールの可視領域よりも長い場合、水平スクロールバーを表示します。

これを省略記号に置き換える必要があるのは、所有者がコントロールを描画することだけです。しかし、ノードのテキストのみを変更したいので、ではなくDrawMode propertyOwnerDrawTextに設定することができます。これにより、オーナー描画の負担が大幅に軽減されます。

TreeViewコントロールhere on MSDNを描画するオーナーのサンプルコードがあります。

TreeViewコントロールを含むコントロールのClientRectangle propertyは、コントロールのクライアントエリアの実際の幅を示します。これを使用して、ノードラベルが長すぎるかどうか、および省略記号で描画する必要があるかどうかを判断します。

various overloads of the TextRenderer.DrawText methodは、ネイティブコントロールが描画する方法(つまり、GDI +ではなくGDIを使用)に似た方法でノードラベルを描画できます。 TextFormatFlagsの適切な組み合わせを渡すと、自動的にテキストをトリミングし、省略記号に置き換える方法が指示されます。

+0

これは私の仕事ではありません – Awadhendra

+0

@Awadhendra:それは素晴らしい作品です。どの部分があなたのために働かなかったのですか?どのようなコードを書いたのですか? –

+0

デザイン時にTreeViewのDrawModeプロパティを設定しました。 – Awadhendra

関連する問題