2011-07-21 16 views
2

私はtreeviewで検索するために "検索TextBox"を持っている、私は非常に結果を与える。しかし、私は私のwinformの "検索テキストボックス"で入力したそれらの部分をBoldにしたいです。単語の数文字を太字にしたいのは、winformsでtreenodeで太字にするにはC#

例:タイプ付きRAM * RAM * esh。

+0

これは私が想像すると手動で行う必要があります。あなたの質問は明確ではありません。質問を改訂して、 "私が入力した"、私のwinformの "TextBox"を検索するような文が、あなたのフォームがどのように見えるか分からない人には明らかです。 –

答えて

4

TreeNodeクラスはそれをサポートしていません。そのテキストは常に1つのフォントTreeView.Fontで描画されます。テキストの部分を太字にすることは、技術的には可能ですが、正しいことを得るのは非常に困難です。 TreeView.DrawModeプロパティとDrawItemイベントでカスタム描画を有効にする必要があります。その良い例がMSDNライブラリの記事にあります。

これは簡単なことですが、難しい問題は、太字でフォントの一部を描いた後にノードが小さすぎてテキストに収まらないことです。 TreeViewには "MeasureNodeText"というイベントがありません。十分なスペースを求めることができます。そのための唯一の回避策は、ノードのテキストを置いて文字の接頭辞を人為的に広げることです。その後、DrawItemイベントで描画しません。一貫して正しく取得するのは非常に難しく、代わりに固定ピッチのフォントを検討したいと思うでしょう。

この機能が本当に重要でない限り、これを行うことはお勧めできません。これは他のプログラムでこの機能が決して見られない理由を説明します。フォントの太さの代わりに色を変更することを検討してください。一緒に作品を接着するのはまだ難しい。

+0

あなたのアプリをWPFに移植する作業が少なくなるかもしれません:) – MattDavey

+0

@ハンス:ありがとうございます。 –

+0

'node.Text = node.Text'を実行すると、' TreeNode.Font'を変更した後にテキストが見つからないという問題を回避できます –

関連する問題