我在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