我在TreeNode对象上设置ForeColor。后来当我点击这个节点时,SelectedNode.ForeColor直到我释放鼠标后才改变。TreeNode ForeColor更改SelectedNode.ForeColor
TreeNode.ForeColor = Color.Red;
ForeColor的所有TreeNodes == Color.Empty在鼠标单击时立即获取正确的SelectedNode.ForeColor。
如果我使用键盘移动选区,则按预期工作。但不是在鼠标点击。如何将节点的前景色设置为Color.Black并在第一次鼠标单击时获取正确的SelectedNode.ForeColor?
我像这样填充TreeView。在鼠标与“色”的所有TreeNode对象附加我得到的前景色(红)下来..直到我放开鼠标左键并得到适当的白色前景色..
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 0; i < 3; i++)
{
TreeNode node = new TreeNode("node_" + i);
for (int j = 0; j < 3; j++)
{
TreeNode childNode = new TreeNode("childNode_" + i + j);
if (j==0)
{
childNode.Text += "color";
childNode.ForeColor = Color.Red;
}
node.Nodes.Add(childNode);
}
treeView1.Nodes.Add(node);
}
}
如果我这样做...
treeView1.FullRowSelect = false; //if this is true it don't work.. hm!
treeView1.DrawMode = TreeViewDrawMode.OwnerDrawText;
treeView1.DrawNode += new DrawTreeNodeEventHandler(treeView1_DrawNode);
void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
e.DrawDefault = true;
}
它的工作原理!嗯。这是.NET TreeView的默认行为中的错误吗?
,当然还有..
//treeView1.DrawMode = TreeViewDrawMode.OwnerDrawText;
//treeView1.DrawNode += new DrawTreeNodeEventHandler(treeView1_DrawNode);
..现在又回到了正常的..不要工作!任何人都可以解释为什么!?! 当我单击节点上的Left按钮时,在这里获得蓝色背景和Node ForeColor。在它上面等待,直到我释放鼠标按钮,然后绘制选择背景 - 前面颜色正确(在我看来)。
注意!如果FullRowSelect为真。上面的DrawNode代码不起作用。它会在除节点部分(它被涂成白色)之外的所有行上绘制蓝色背景颜色。
我看不到这个帮助。已将此代码添加到treeView1_MouseDown。 MouseEventArgs args = new MouseEventArgs(MouseButtons.Left,e.Clicks,e.X,e.Y,e.Delta); treeView1_MouseClick(sender,args); 我仍然在鼠标按下时应用ForeColor(在蓝色背景上),直到我释放鼠标按钮(左)。然后我在蓝色背景上获得适当的白色ForeColor。 – Vemund 2010-12-10 07:57:58