Wenn Sie auf einen Knoten in einem TeeView mit OwnerDrawAll klicken, wird es nicht ausgewählt, bis es eine Maus empfängt, die ein anderes Verhalten als der Standardmodus und offensichtlich nicht korrekt ist. Hat jemand eine Lösung dafür?TreeView Fehler in WindowsForms bei Verwendung von OwnerDrawAll
den Code ausführen unterhalb dieses Verhalten zu sehen:
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);
}
}
Danke, aber das löst das Problem nicht, denn wenn Sie auf ein Knotenlabel klicken, wird es immer editierbar. Was nicht eigentlich eine Beschriftung sein sollte, sollte editierbar sein, wenn Sie auf einen bereits ausgewählten Knoten klicken –
Sehen Sie sich meinen hinzugefügten Code an. Es schien ein bisschen besser zu funktionieren. – itsmatt