Having a hard time understanding an ownerdraw treeview, here is the full story:
A VS2013 WinForms app (running on Windows 8.1 with TrueType enabled if that matters...) with a treeview with: DrawMode = OwnerDrawText;
In form load, some nodes are added to the treeview:
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;
}
}
Next, I am drawing every other node myself to show the problem:
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;
}
}
Looking at the results, notice how the owner drawn (red) items nodes have an inter-character spacing that is different from when the treeview draws its own nodes. And after a while, the spacing suddenly changes. Am I using the wrong font here? Am I missing something obvious?
Thanks for your time.