如何更改 WinForms Treeview 控件中用于内联编辑节点文本的字体?
我正在填充 WinForms TreeView 控件,并在加载时以不同方式设置每个节点的字体属性。
这些节点还允许内联编辑(通过按 F2 更改文本,或单击选择后的文本,如 Windows 资源管理器中的文件夹名称)。
但是,当节点进入编辑模式时,编辑时使用的字体将恢复为 TreeView 控件的默认字体,而不是该特定节点的字体。
是否可以设置编辑每个节点时使用的编辑控件的字体,以匹配用于显示 TreeView 节点的字体? (如果是这样,怎么办?)
I am populating a WinForms TreeView control and setting the font attributes of each node differently as they are loaded.
The nodes also allow inline editing (changing the text by pressing F2, or clicking once selected like folder names in Windows Explorer).
When the node goes into edit mode though, the font used when editing reverts to the default font of the TreeView control, not that specific node's font.
Is it possible to set the font of the edit control used when editing each node, to match the font used for displaying that TreeView node? (If so, how?)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
正如您所说,对 TreeNode 源代码的检查表明该节点在进入编辑模式时正在使用编辑控件(来自 Windows UI 控件,而不是 .NET 窗体)。我在类中没有看到任何可以在编辑模式下设置字体的内容,因此我认为您需要将消息直接发布到编辑控件。使用 TVM_GETEDITCONTROL 获取它的句柄,和 WM_SETFONT 设置字体。您可能需要 Font.ToHfont() ,还有。
编辑:下面是如何调用 SendMessage 来完成字体更改的示例。
As you said, an examination of the TreeNode source reveals that the node is using an Edit Control (from Windows UI Controls, not .NET Forms) when it goes into edit mode. I don't see anything in the class that will set the font in edit mode, so I think you will need to post messages directly to the Edit Control. Use TVM_GETEDITCONTROL to get a handle to it, and WM_SETFONT to set the font. You will probably want Font.ToHfont(), as well.
Edit: here's an example of how you can invoke SendMessage to accomplish the font change.