this.treeView.CheckBoxes = true; 를 작성하면
TreeView에 출력되는 노드를 체크박스로 변경할 수 있습니다.
SelectedNode.Remove()를 사용하여 여러개의 노드를 체크 후 삭제 시도 시 에러 발생합니다.
여러개 항목을 체크 후 삭제 할 때는 별도의 코드를 작성해야 합니다.
private List<TreeNode> checkedNodes = new List<TreeNode>();
#region Form1()
/// <summary>
/// 생성자 입니다.
/// </summary>
public Form1()
{
InitializeComponent();
this.addButton.Click += addButton_Click;
this.deleteButton.Click += deleteButton_Click;
this.deleteAllButton.Click += deleteAllButton_Click;
this.treeView.CheckBoxes = true;
}
#endregion
#region addButton_Click(sender, e)
/// <summary>
/// 추가 버튼 입니다.
/// </summary>
/// <param name="sender">이벤트 발생자 입니다.</param>
/// <param name="e">이벤트 인자 입니다.</param>
private void addButton_Click(object sender, System.EventArgs e)
{
this.treeView.Nodes.Add("Books");
this.treeView.Nodes.Add("Papers");
this.treeView.Nodes.Add("Folders");
this.treeView.Nodes[0].Nodes.Add("Book_1");
this.treeView.Nodes[0].Nodes.Add("Book_2");
this.treeView.Nodes[0].Nodes.Add("Book_3");
this.treeView.Nodes[1].Nodes.Add("Paper_1");
this.treeView.Nodes[1].Nodes.Add("Paper_2");
this.treeView.Nodes[1].Nodes.Add("Paper_3");
}
#endregion
#region deleteButton_Click(sender, e)
/// <summary>
/// 삭제 버튼 입니다.
/// </summary>
/// <param name="sender">이벤트 발생자 입니다.</param>
/// <param name="e">이벤트 인자 입니다.</param>
private void deleteButton_Click(object sender, System.EventArgs e)
{
if (treeView.CheckBoxes = true)
{
RemoveCheckedNodes(treeView.Nodes);
}
else if (treeView.CheckBoxes = false)
{
this.treeView.SelectedNode.Remove();
}
}
#endregion
#region deleteAllButton_Click(sender, e)
/// <summary>
/// 전체 삭제 버튼 입니다.
/// </summary>
/// <param name="sender">이벤트 발생자 입니다.</param>
/// <param name="e">이벤트 인자 입니다.</param>
private void deleteAllButton_Click(object sender, System.EventArgs e)
{
this.treeView.Nodes.Clear();
}
#endregion
#region RemoveCheckedNodes
/// <summary>
/// 체크된 노드를 삭제 합니다.
/// </summary>
/// <param name="nodes">노드들 입니다.</param>
private void RemoveCheckedNodes(TreeNodeCollection nodes)
{
foreach (TreeNode node in nodes)
{
if (node.Checked)
{
checkedNodes.Add(node);
}
else
{
RemoveCheckedNodes(node.Nodes
);
}
}
foreach (TreeNode checkedNode in checkedNodes)
{
nodes.Remove(checkedNode);
}
}
#endregion
728x90
'C# > Winform' 카테고리의 다른 글
C# / Winform 폰트 변경 시 트루타입이 아니라 폰트 변경 안될때. (1) | 2019.05.26 |
---|---|
C# / Winform 텍스트 박스의 값이 입력 안되었을 경우 메시지 박스 출력하기.(유효성 검사) (0) | 2019.05.07 |
C# / Winform TreeView TreeView의 노드를 추가, 삭제, 전체 삭제하기. (0) | 2019.04.21 |
C# / Winform TreeView TreeView 생성하기. (0) | 2019.04.21 |
DB에서의 NULL과 C# 에서의 NULL의 차이 (0) | 2019.04.07 |
댓글