您将如何在 .NET 2.0+ WinForm 应用程序中呈现标签云?
我正在考虑的一种解决方案是使用 WebBrowser 控件并生成一些临时 HTML,但这似乎是一个非常繁重的解决方案。
我错过了更简单的东西吗?
如何创建一个实现 Flow 布局控件的用户控件?您可以为“Add(string tagName)”创建一个动态链接标签并将其添加到 Flow Layout 控件的方法。Flow Layout 就像 web 一样工作,添加到它的控件按创建顺序放置。
然后,您只需添加一些逻辑即可根据该标签的命中数调整链接标签的大小。
那么,您将需要具有以下主要功能的控件:
这些在WF控件中有点难以获得。带有 ReadOnly = true 的 RichTextBox 为您提供自动布局,但不提供命中测试。带有 DrawItem 的 ListBox 可以为您提供可变大小的字符串和命中测试,但不是自然布局。
我想我会使用 RTB 并使用 MouseDown 事件和 GetCharIndexFromPosition() 进行命中测试,在点击的位置读回标签。您需要一些逻辑来找到单词周围的开始和结束空白。