DevExpress中TreeList樹樣式調整


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

https://blog.csdn.net/u010613052/article/details/79752671

https://documentation.devexpress.com/WindowsForms/DevExpress.XtraTreeList.TreeList.CustomDrawNodeButton.event

https://www.devexpress.com/Support/Center/Question/Details/T238989/how-to-change-an-expand-button-image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM