Lorsque vous cliquez sur un nœud dans un TeeView en utilisant OwnerDrawAll, il n'est pas sélectionné jusqu'à ce qu'il reçoive une souris qui est un comportement différent du mode standard et évidemment pas correct. Est-ce que quelqu'un a une solution à cela?TreeView bug dans windowsforms lors de l'utilisation OwnerDrawAll
Exécutez le code ci-dessous pour voir ce comportement:
public partial class Form1 : Form
{
private System.Windows.Forms.TreeView treeView1;
public Form1()
{
System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Some Node");
System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("Click Me Please!");
this.treeView1 = new System.Windows.Forms.TreeView();
this.treeView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.treeView1.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawAll;
this.treeView1.FullRowSelect = true;
this.treeView1.LabelEdit = true;
treeNode1.Text = "Some Node";
treeNode2.Text = "Click Me Please!";
this.treeView1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {treeNode1, treeNode2});
this.treeView1.DrawNode += new System.Windows.Forms.DrawTreeNodeEventHandler(this.treeView1_DrawNode);
Controls.Add(treeView1);
}
private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
Rectangle nodeRect = e.Bounds;
Rectangle nodeBounds = e.Node.Bounds;
if (e.Node.IsSelected) {
e.Graphics.FillRectangle(Brushes.CornflowerBlue, nodeRect);
}
else {
e.Graphics.FillRectangle(Brushes.White, nodeRect);
}
TextRenderer.DrawText(e.Graphics, e.Node.Text, Font, nodeBounds, System.Drawing.Color.Black, Color.Transparent, TextFormatFlags.VerticalCenter | TextFormatFlags.NoClipping);
}
}
Merci, mais cela ne résout pas le problème car lorsque vous cliquez sur une étiquette de noeud, elle devient toujours modifiable. Ce qui n'est pas la façon dont il est censé être un label devrait devenir modifiable lorsque vous cliquez sur un nœud qui a déjà été sélectionné –
Jetez un oeil à mon code ajouté. Cela semblait fonctionner un peu mieux. – itsmatt