【发布时间】:2014-12-15 19:03:46
【问题描述】:
很难理解 ownerdraw 树视图,这里是完整的故事:
一个 VS2013 WinForms 应用程序(在 Windows 8.1 上运行,启用 TrueType,如果这很重要...),具有以下树视图:DrawMode = OwnerDrawText;
在表单加载中,一些节点被添加到树视图中:
private void Form1_Load(object sender, EventArgs e)
{
// add some nodes
for (int i = 0; i < 20; i++)
{
TreeNode treeNode = treeView1.Nodes.Add(new String('i', 60));
treeNode.Tag = i;
}
}
接下来,我自己绘制所有其他节点以显示问题:
private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
// use ownerdraw every other item
if ((int)(e.Node.Tag) % 2 == 0)
{
Font font = e.Node.NodeFont;
if (font == null) font = e.Node.TreeView.Font;
e.Graphics.DrawString(e.Node.Text, font, Brushes.Red, e.Bounds.X, e.Bounds.Y);
}
else
{
e.DrawDefault = true;
}
}
查看结果,请注意所有者绘制的(红色)项目节点的字符间距与树视图绘制自己的节点时的字符间距不同。过了一会儿,间距突然发生了变化。我在这里使用了错误的字体吗?我错过了什么明显的东西吗?
感谢您的宝贵时间。
【问题讨论】:
-
值得注意的是,我们无法看到结果。您可能需要提供屏幕截图。否则,很好的第一个问题!
-
糟糕,我最初的问题有图片,但因为我从来没有在这里帮助过其他人(我知道:shame blush 我会变得更好) 我不被允许上传带有问题的图片。我去尝试尽快解决这个问题。
-
如果您发布链接,较高代表的用户通常会帮助您。