| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > TreeView: selected node fore color |
| Автор: lexem78 30.6.2011, 21:25 |
| Здрасте. Во время добавления сабнодов, текст некоторых из них должен быть серым (вместо черного), чтоб показать что они якобы disabled. Но почему-то при выделении текст всё равно становится чёрным и весь эффект пропадает. Как сделать чтоб цвет остался серым? |
| Автор: lexem78 1.7.2011, 14:40 |
| Сам нашёл. Но если кому-то интересно, то вот пример как это сделать: private void InitTreeView() { TreeNode node; for (int x = 1; x < 4; ++x) { // Add a root node to the TreeView control. node = myTreeView.Nodes.Add(String.Format("Node {0}", x)); for (int y = 1; y < 4; ++y) { TreeNode subnode = new TreeNode(String.Format("Subnode {0}", y)); node.Nodes.Add(subnode); } } myTreeView.ExpandAll(); myTreeView.DrawMode = TreeViewDrawMode.OwnerDrawText; myTreeView.DrawNode += new DrawTreeNodeEventHandler(myTreeView_DrawNode); } private void myTreeView_DrawNode(object sender, DrawTreeNodeEventArgs e) { // Draw the background and node text for a selected node. if ((e.State & TreeNodeStates.Selected) != 0) { // Retrieve the node font. If the node font has not been set, // use the TreeView font. Font nodeFont = e.Node.NodeFont; if (nodeFont == null) nodeFont = ((TreeView)sender).Font; // Draw the node text. e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.Gray, Rectangle.Inflate(e.Bounds, 0, 0)); } else { // Draw the node text. e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.Black, Rectangle.Inflate(e.Bounds, 0, 0)); } } // Use the default background and node text. else { e.DrawDefault = true; } |