DevExpress的TreeList默認是沒有樹狀線的,修改TreeLineStyle屬性無效,這對於Tree並不好看。

解決方案一
官方解釋說對於DevExpress的標准主題是不支持TreeList有TreeLine的(不是技術問題,是設計理念不同),如DevExpress Style, DevExpress Dark Style、Office 2013、Office 2010, Visual Studio 2013, VS2010, Seven Classic等,默認如下:

而主題皮膚和其他皮膚是支持的。所以使用非標准皮膚就可以實現TreeLine的支持。

關於三類皮膚的划分如下:

解決方案二
很多時候,我們都會使用標准皮膚,只有使用代碼強制這個屬性,修改代碼如下:
Skin skin = GridSkins.GetSkin(treeList1.LookAndFeel); skin.Properties[GridSkins.OptShowTreeLine] = true;
效果如下:

雖然是實現了,但看起來還是怪怪的,領導還想要自行車。
最新款自動車


由於標准皮膚不支持+/-號(plus/minus),所以官方給出的解決方案:一是使用其他非標准皮膚,二是自定義繪制節點按鍵事件(CustomDrawNodeButton),代碼如下:
private void TreeList1_CustomDrawNodeButton(object sender, CustomDrawNodeButtonEventArgs e)
{
//1、矩形
Rectangle rect = Rectangle.Inflate(e.Bounds, 0, -2);
//矩形背景
Brush backBrush = e.Cache.GetGradientBrush(rect, BackColor, BackColor, LinearGradientMode.ForwardDiagonal);
e.Cache.FillRectangle(backBrush, rect);
//矩形邊框
Pen pen = e.Cache.GetPen(Color.Gray);
//pen.DashStyle = DashStyle.Dot;
e.Cache.DrawRectangle(pen, rect);
//2、顯示的文字
string displayCharacter = e.Expanded ? "-" : "+";
//文字格式
StringFormat outCharacterFormat = e.Appearance.GetStringFormat();
outCharacterFormat.Alignment = StringAlignment.Center;
outCharacterFormat.LineAlignment = StringAlignment.Center;
//繪制文字
e.Appearance.FontSizeDelta = -2;
e.Appearance.FontStyleDelta = FontStyle.Bold;
e.Cache.DrawString(displayCharacter, e.Appearance.Font,e.Cache.GetSolidBrush(ForeColor), rect, outCharacterFormat);
//禁止默認繪畫
e.Handled = true;
}
參考
https://www.devexpress.com/Support/Center/Question/Details/Q380748/force-treelines-on-treelist
