.NET 2.0+ WinForm アプリケーション内でタグ クラウドをどのようにレンダリングしますか?
私が考えている 1 つの解決策は、WebBrowser コントロールを使用してアドホック HTML を生成することですが、それはかなり重い解決策のようです。
もっと単純なものがありませんか?
フロー レイアウト コントロールを実装するユーザー コントロールを作成してみませんか? その場でリンク ラベルを作成し、フロー レイアウト コントロールに追加する "Add(string tagName)" のメソッドを持つことができます。フロー レイアウトは、追加されたコントロールが作成順に配置されるという点で、Web と同じように機能します。
次に、そのタグのヒット数に基づいてリンク ラベルのサイズを変更するロジックを追加するだけです。
さて、次の主要な機能を備えたコントロールが必要になります。
これらは WF コントロールでは手に入りにくいものです。ReadOnly = true の RichTextBox は自動レイアウトを提供しますが、ヒット テストは提供しません。DrawItem を含む ListBox は、可変サイズの文字列とヒット テストを提供できますが、自然なレイアウトにはなりません。
RTB を使用して、ヒット テストを MouseDown イベントと GetCharIndexFromPosition() で機能させ、クリックされた場所のタグを読み戻そうと思います。単語の先頭と末尾の空白を見つけるには、少しロジックが必要です。