//重绘treeview节点样式
        private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e)
        {
            Color foreColor;
            Color backColor;
            if ((e.State & TreeNodeStates.Selected) > 0)
            {
                foreColor = Color.DarkOrange;//鼠标点击节点时文字颜色
                backColor = Color.DimGray;//鼠标点击节点时背景颜色
            }
            else if ((e.State & TreeNodeStates.Hot) > 0)
            {
                foreColor = Color.Lime;//鼠标经过时文字颜色
                backColor = Color.Gray;//鼠标经过时背景颜色
            }
            else
            {
                foreColor = this.treeView1.ForeColor;
                backColor = this.treeView1.BackColor;
            }
            e.Graphics.FillRectangle(new SolidBrush(backColor), new Rectangle(e.Bounds.Location, new Size(this.treeView1.Width - e.Bounds.X, e.Bounds.Height)));
            e.Graphics.DrawString(e.Node.Text, this.treeView1.Font, new SolidBrush(foreColor), e.Bounds);
        }
用微软雅黑就不会换行,用宋体就会换行。

解决方案 »

  1.   


    测试过用12F字体也会换行,默认是9F,10.5F也一样。如果用系统自绘就没问题。重绘就这样了。行高设置为20,要设置为14才不会换行,但是那样就挨得太近了。
      

  2.   

    那弄粗体?  或者把行距离设置大点  这样应该可以吧,我ASP.NET 不会...
      

  3.   

    搞定了,把最后一句该下就行了e.Graphics.DrawString(e.Node.Text, this.treeView1.Font, new SolidBrush(foreColor), e.Bounds.X,e.Bounds.Y);