컬렉션에 추가 Controls.Add(treeList); AddTreeListColumn ( treeList, GetTreeListColumn("Name", "Name", UnboundColumnType.String, 200, HorzAlignment.Near, false, FormatType.None, null, 0) "> 컬렉션에 추가 Controls.Add(treeList); AddTreeListColumn ( treeList, GetTreeListColumn("Name", "Name", UnboundColumnType.String, 200, HorzAlignment.Near, false, FormatType.None, null, 0) "> 컬렉션에 추가 Controls.Add(treeList); AddTreeListColumn ( treeList, GetTreeListColumn("Name", "Name", UnboundColumnType.String, 200, HorzAlignment.Near, false, FormatType.None, null, 0) ">
private TreeList treeList = null;
public vGridTest2()
{
InitializeComponent();
}
private void vGridTest2_Load(object sender, EventArgs e)
{
this.treeList = new DevExpress.XtraTreeList.TreeList();
treeList.Appearance.Row.Font = new System.Drawing.Font("고딕", 12f);
BeginInitialize(treeList);
SetTreeList(this.treeList, "treeList", false, false, false, false, false, false, false, false, true, false);
treeList.Dock = DockStyle.Right;
//노드의 검사 상태가 최종 사용자에 의해 변경된 후에 발생합니다.
treeList.AfterCheckNode += treeList_AfterCheckNode;
// 컨트롤에 포함된 컨트롤의 컬렉션을 가져옵니다.
// Add(treeList) -> 컬렉션에 추가
Controls.Add(treeList);
AddTreeListColumn
(
treeList,
GetTreeListColumn("Name", "Name", UnboundColumnType.String, 200, HorzAlignment.Near, false, FormatType.None, null, 0)
);
AddTreeListColumn
(
treeList,
GetTreeListColumn("Score", "Score", UnboundColumnType.Integer, 100, HorzAlignment.Far, false, FormatType.Numeric, "#,##0", 0)
);
EndInitialize(this.treeList);
AddData(this.treeList);
}
/// <summary>
/// 초기화 시작하기
/// </summary>
/// <param name="treeList">트리 리스트</param>
private void BeginInitialize(TreeList treeList)
{
// 을 사용하면 컨트롤이 여러 속성 할당을 최적화할 수 있습니다.
// 따라서 디자인 타임에 공동 종속 속성을 초기화하거나 여러 속성을 일괄 설정할 수 있습니다.
((ISupportInitialize)treeList).BeginInit();
// Beginlnit 호출하여 초기화가 시작 중임을 개체에 알릴 수 있습니다.
// EndInit 호출하여 초기화가 완료되었음을 알릴 수 있습니다.
}
/// <summary>
/// 초기화 종료하기
/// </summary>
/// <param name="treeList">트리 리스트</param>
private void EndInitialize(TreeList treeList)
{
((ISupportInitialize)treeList).EndInit();
}
/// <summary>
/// 트리 리스트 설정하기
/// </summary>
/// <param name="name">명칭</param>
/// <param name="showColumns">컬럼 표시 여부</param>
/// <param name="enableColumnMenu">컬럼 메뉴 활성화 여부</param>
/// <param name="autoWidth">자동 너비 여부</param>
/// <param name="showIndicator">지시가 표시 여부</param>
/// <param name="showHorzLines">수평선 표시 여부</param>
/// <param name="showVertLines">수직선 표시 여부</param>
/// <param name="showFocusedFrame">포커스 프레임 표시 여부</param>
/// <param name="enableAppearanceFocusedCell">포커스 셀 모양 활성화 여부</param>
/// <param name="invertSelection">선택 반전 여부</param>
private void SetTreeList(TreeList treeList, string name, bool showColumns, bool enableColumnMenu, bool autoWidth
, bool showIndicator, bool showHorzLines, bool showVertLines, bool showFocusedFrame, bool enableAppearanceFocusedCell
, bool invertSelection, bool editable)
{
treeList.Name = name;
treeList.OptionsView.ShowColumns = showColumns;
treeList.OptionsMenu.EnableColumnMenu = enableColumnMenu;
treeList.OptionsView.AutoWidth = autoWidth;
treeList.OptionsView.ShowIndicator = showIndicator;
treeList.OptionsView.ShowHorzLines = showHorzLines;
treeList.OptionsView.ShowVertLines = showVertLines;
treeList.OptionsSelection.EnableAppearanceFocusedCell = enableAppearanceFocusedCell;
treeList.OptionsSelection.InvertSelection = invertSelection;
treeList.OptionsBehavior.Editable = editable;
}
/// <summary>
/// 트리 리스트 노드 체크 후 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void treeList_AfterCheckNode(object sender, NodeEventArgs e)
{
treeList.AfterCheckNode -= treeList_AfterCheckNode;
TreeListNode treeListNode = e.Node;
SetChecked(treeListNode, treeListNode.Checked);
treeList.AfterCheckNode += treeList_AfterCheckNode;
}
/// <summary>
/// 체크 설정하기
/// </summary>
/// <param name="parentNode">부모 노드</param>
/// <param name="isChecked">체크 여부</param>
private void SetChecked(TreeListNode parentNode, bool isChecked)
{
if (parentNode.Nodes.Count == 0)
{
return;
}
for (int i = 0; i < parentNode.Nodes.Count; i++)
{
parentNode.Nodes[i].Checked = isChecked;
SetChecked(parentNode.Nodes[i], isChecked);
}
}
/// <summary>
/// 트리 리스트 컬럼 추가하기
/// </summary>
/// <param name="treeList">트리 리스트</param>
/// <param name="treeListColumnArray">트리 리스트 컬럼 배열</param>
private void AddTreeListColumn(TreeList treeList, TreeListColumn[] treeListColumnArray)
{
treeList.Columns.AddRange(treeListColumnArray);
}
/// <summary>
/// 트리 리스트 컬럼 추가하기
/// </summary>
/// <param name="treeList">트리 리스트</param>
/// <param name="treeListColumn">트리 리스트 컬럼</param>
private void AddTreeListColumn(TreeList treeList, TreeListColumn treeListColumn)
{
AddTreeListColumn(treeList, new TreeListColumn[] { treeListColumn });
}
/// <summary>
/// 트리 리스트 컬럼 구하기
/// </summary>
/// <param name="caption">제목</param>
/// <param name="fieldName">필드명</param>
/// <param name="unboundColumnType">언바운드 컬럼 종류</param>
/// <param name="width">너비</param>
/// <param name="horzAlignment">수평 정렬</param>
/// <param name="allowEdit">편집 허용 여부</param>
/// <param name="formatType">형식 종류</param>
/// <param name="formatString">형식 문자열</param>
/// <param name="visibleIndex">표시 인덱스</param>
/// <returns>트리 리스트 컬럼 구하기</returns>
private TreeListColumn GetTreeListColumn(string caption, string fieldName, UnboundColumnType unboundColumnType, int width,
HorzAlignment horzAlignment, bool allowEdit, FormatType formatType, string formatString, int visibleIndex)
{
TreeListColumn treeListColumn = new TreeListColumn();
treeListColumn.Name = string.Empty;
treeListColumn.Caption = caption;
treeListColumn.FieldName = fieldName;
treeListColumn.Width = width;
treeListColumn.AppearanceHeader.Options.UseTextOptions = true;
treeListColumn.AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Center;
treeListColumn.AppearanceCell.Options.UseTextOptions = true;
treeListColumn.AppearanceCell.TextOptions.HAlignment = horzAlignment;
treeListColumn.OptionsColumn.AllowEdit = allowEdit;
treeListColumn.Format.FormatType = formatType;
treeListColumn.Format.FormatString = formatString;
treeListColumn.VisibleIndex = visibleIndex;
treeListColumn.Visible = true;
return treeListColumn;
}
/// <summary>
/// 데이타 추가하기
/// </summary>
/// <param name="treeList">트리 리스트</param>
private void AddData(TreeList treeList)
{
treeList.BeginUnboundLoad();
TreeListNode codeNode = AddTreeListNode(treeList, null, new object[] { "Code", 100 });
TreeListNode documentsNode = AddTreeListNode(treeList, null, new object[] { "Documents", 50 });
TreeListNode videoNode = AddTreeListNode(treeList, null, new object[] { "Videos", 75 });
AddTreeListNode(treeList, codeNode, new object[] { "Data layer", 10 });
AddTreeListNode(treeList, codeNode, new object[] { "Business layer", 20 });
AddTreeListNode(treeList, codeNode, new object[] { "Windows application", 30 });
AddTreeListNode(treeList, documentsNode, new object[] { "Project scope", 50 });
AddTreeListNode(treeList, documentsNode, new object[] { "Work log", 70 });
AddTreeListNode(treeList, videoNode, new object[] { "Intro & summary", 10 });
AddTreeListNode(treeList, videoNode, new object[] { "Architecture walkthrough", 20 });
AddTreeListNode(treeList, videoNode, new object[] { "Project design", 30 });
AddTreeListNode(treeList, videoNode, new object[] { "Code review", 50 });
treeList.EndUnboundLoad();
treeList.ExpandAll();
treeList.SetFocusedNode(videoNode);
}
/// <summary>
/// 트리 리스트 노드 추가하기
/// </summary>
/// <param name="treeList">트리 리스트</param>
/// <param name="parentTreeListNode">부모 트리 리스트 노드</param>
/// <param name="checkState">체크 상태</param>
/// <param name="value">값</param>
/// <param name="tag">태그</param>
/// <returns>트리 리스트 노드</returns>
private TreeListNode AddTreeListNode(TreeList treeList, TreeListNode parentTreeListNode, CheckState checkState, object value, object tag)
{
TreeListNode treeListNode = treeList.AppendNode(value, parentTreeListNode, checkState);
treeListNode.Tag = tag;
return treeListNode;
}
private TreeListNode AddTreeListNode(TreeList treeList, TreeListNode parentTreeListNode, CheckState checkState, object value)
{
return AddTreeListNode(treeList, parentTreeListNode, CheckState.Unchecked, value, null);
}
/// <summary>
/// 트리 리스트 노드 추가하기
/// </summary>
/// <param name="treeList">트리 리스트</param>
/// <param name="parentTreeListNode">부모 트리 리스트 노드</param>
/// <param name="value">값</param>
/// <returns>트리 리스트 노드</returns>
private TreeListNode AddTreeListNode(TreeList treeList, TreeListNode parentTreeListNode, object value)
{
return AddTreeListNode(treeList, parentTreeListNode, CheckState.Unchecked, value, null);
}
결과 화면의VGridControl
