■ TreeList 클래스의 CustomDrawRowFooterCell 이벤트를 사용해 행 바닥글 셀을 커스텀 그리는 방법을 보여준다.
▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; using DevExpress.XtraTreeList; ... private TreeList treeList; ... this.treeList.CustomDrawRowFooterCell += treeList_CustomDrawRowFooterCell; ... #region 트리 리스트 행 바닥글 셀 커스텀 그리기 - treeList_CustomDrawRowFooterCell(sender, e) /// <summary> /// 트리 리스트 행 바닥글 셀 커스텀 그리기 /// </summary> /// <param name="sender">이벤트 발생자</param> /// <param name="e">이벤트 인자</param> private void treeList_CustomDrawRowFooterCell(object sender, CustomDrawRowFooterCellEventArgs e) { if(e.Text == string.Empty || e.Column.Caption != "Budget") { return; } Brush brush; Border3DStyle border3DStyle; // 요약 값을 구한다. int summaryValue = Convert.ToInt32(e.Text); // 범위 밖에 있는 값들을 위한 스타일을 설정한다. if(summaryValue > 1000000) { brush = new LinearGradientBrush ( e.Bounds, Color.FromArgb(0, 255, 128,0), Color.FromArgb(100, Color.Red), LinearGradientMode.Vertical ); border3DStyle = Border3DStyle.RaisedInner; } else { brush = new LinearGradientBrush ( e.Bounds, Color.FromArgb(100, Color.Blue), Color.FromArgb(0, 255, 128,0), LinearGradientMode.Vertical ); border3DStyle = Border3DStyle.SunkenOuter; } // 배경색을 채우고 테두리를 그린다. using(brush) { e.Graphics.FillRectangle(brush, e.Bounds); } ControlPaint.DrawBorder3D(e.Graphics, e.Bounds, border3DStyle); // 문자열에 포맷을 설정하고 칠한다. string text = string.Format("소계 : {0:c0}", summaryValue); e.Graphics.DrawString ( text, e.Appearance.Font, e.Appearance.GetForeBrush(e.Cache), e.Bounds, e.Appearance.GetStringFormat() ); // 디폴트 칠하기를 금지한다. e.Handled = true; } #endregion |