Avere una difficoltà a comprendere un TreeView OwnerDraw, ecco la storia completa:Perseguitata da C# OwnerDraw TreeView
A VS2013 WinForms app (in esecuzione su Windows 8.1 con TrueType abilitato se quello che conta ...) con una vista ad albero con : DrawMode = OwnerDrawText;
In caricamento form, alcuni nodi vengono aggiunti alla vista ad albero:
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;
}
}
Avanti, sto disegnando ogni altro nodo me stesso per mostrare il problema:
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;
}
}
Guardando i risultati, avviso in che modo i nodi di oggetti disegnati dal proprietario (rosso) hanno una spaziatura tra caratteri diversa da quando la vista ad albero disegna i propri nodi. E dopo un po ', la spaziatura cambia improvvisamente. Sto usando il font sbagliato qui? Mi manca qualcosa di ovvio?
Grazie per il vostro tempo.
Vale la pena notare che non possiamo * vedere i risultati. Potresti voler fornire uno screenshot. Altrimenti, bella prima domanda! – BradleyDotNET
Wooops, la mia domanda originale aveva l'immagine, ma come non ho mai aiutato qualcun altro qui (lo so: * vergogna * * arrossire * mi migliorerò) Non mi è stato permesso di caricare una foto con la domanda. Vado e provo a ripararlo presto. – user4363553
Se pubblichi un link, un utente con un alto profilo ti aiuterà spesso. – BradleyDotNET