2
OwnerDrawAllを使用してTeeView内のノードをクリックすると、標準モードとは異なる振る舞いで、明らかに正しくないマウスを受け取るまで選択されません。誰にもこれに対する解決策がありますか?OwnerDrawAllを使用した場合のwindowsformのTreeViewバグ
は、この動作を確認するには、以下のコードを実行します。
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);
}
}
ありがとうございますが、ノードラベルをクリックすると常に編集可能になるため、これで問題は解決しません。既に選択されているノードをクリックすると、ラベルになるはずの方法は編集可能になるはずです –
私の追加したコードを見てください。もう少しうまくいくように見えました。 – itsmatt