Я установил ForeColor для объекта TreeNode. И позже, когда я щелкаю по этим узлам, SelectedNode.ForeColor не изменяется до тех пор, пока я не отпущу мышь.
TreeNode.ForeColor = Color.Red;
Все TreeNodes с ForeColor == Color.Empty получают правильный SelectedNode.ForeColor сразу по щелчку мыши.
Если я перемещаю выделение с помощью клавиатуры, оно работает как положено. Но не по щелчку мыши. Как мне установить ForeColor узлов, например, Color.Black и получить правильный SelectedNode.ForeColor при первом щелчке мыши?
Я заполняю TreeView вот так. На всех объектах TreeNode с добавленным «color» я получаю ForeColor (красный) при нажатии мыши до тех пор, пока не отпущу левую кнопку мыши и не получу правильный белый ForeColor.
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);
.. теперь все в порядке ... И не работает !! Может кто-нибудь объяснить, почему!?!
Здесь я получаю синий фон и ForeColor узла, когда я нажимаю левую кнопку на узле. Над ним ждет, пока я не отпущу кнопку мыши, а затем закраслю фон выделения и правильный цвет переднего плана (на мой взгляд).
Внимание! Если FullRowSelect имеет значение true. Код DrawNode выше не работает. Он закрасит синий цвет фона для всей строки, за исключением части узла (она окрашена в белый цвет).