在TreeView中设置编辑框的位置

时间:2012-06-13 08:48:20

标签: winforms treeview ownerdrawn

在WinForms中,我想知道是否可以在TreeView中以编程方式设置编辑框的位置,如果是,如何?

让我提供更多细节。 我们有一个所有者绘制TreeView(System.Windows.Forms.TreeView),DrawMode设置为OwnerDrawAll。 我们首先绘制一个图标,然后绘制层次结构,然后绘制与项目相关的图标,然后绘制文本。

[O] +- # Root 1
    |  |
[X] |  +- # Node 1
    |  |  |
[X] |  |  +- # SubNode 1
    |  |  |
[O] |  |  +- # SubNode 2
    |  |
[O] |  +- # Node 2
    |
[X] +- # Root 2
       |
[X]    +- # Node 3

在上图中,[X][O]是第一个图标的代表,#符号是项目相关图标的表示。

问题是,当使用常规TreeView方式编辑文本时,通过将LabelEdit设置为true,然后编辑框与图标(图表上的#符号)重叠而不是在图标旁边,因为我们移动了文字呈现。 另一个问题是,单击以使编辑框显示的位置(矩形)也会移位。

我尝试使用更高的值设置Indent属性,然后将我的层次结构,与项目相关的图标和文本渲染移回到左侧以使其保持正确对齐,但在这种情况下,每个节点的缩进加倍: / p>

它在数学上导致[spacing = level * indent * 2]

我需要[spacing = indent + (level * indent)]

的地方

我无法为每个节点单独设置Indent属性,因此该解决方案无效。

我试图在OnBeforeLabelEdit事件中成功获取编辑框句柄,但后来我发现我无法对它做任何有用的事情。

我们正在考虑使用自定义TextBox并将其自己定位在TreeView上,但优先使用常规已实现的方式。

提前致谢。

0 个答案:

没有答案