레벨을 추가하거나 제거하기 위해 Windows Form의 TreeView를 사용할 수 있는지 궁금합니다.TreeNode에 레벨 추가 또는 제거
예를 들어:
ParentNode
| Child1
| | Child1.1
aa는 Node.Level
있습니다 : 버튼에 사용자가 클릭이되고 자식 2 할 수준을 추가 할 경우
ParentNode
| Child1
| Child2
: 내 트 리뷰로 시작하는이 같다 기능을 사용하지만 레벨을 가져오고 설정하지 않을 수 있습니다.
편집 :
노드가 자동으로 작성되며 레벨은 Excel 셀의 스타일에 따라 지정됩니다. 문제는 엑셀 파일이 잘 작성되지 않았기 때문에 생성 된 노드가 올바른 위치에 있지 않다는 것입니다. 직접 2
내가 노드의 선택에 Move Left
Move Right
버튼을 만들
1 사용자가 엑셀 파일을 수정합니다 그래서이 문제를 해결 O 2 옵션을 참조하십시오.
두 번째 가능성을 제안하고 싶습니다.
여기에 내가 노드를 구축하는 데 사용되는 코드는 다음과 같습니다
public static void AddNodes(Excel.Application app,
TreeView treeView)
{
Excel.Range selection = app.Selection;
ArrayList style = new ArrayList();
TreeNode parentNode = treeView.SelectedNode;
//Selected Node => Last used node
for (int i = 1; i <= selection.Rows.Count; i++)
{
TreeNode tn;
int fontSize = Convert.ToInt32(selection.Cells[i].Font.Size);
if (!style.Contains(fontSize))
{
style.Add(fontSize);
}
else if (style[style.Count - 1].Equals(fontSize))
{
try
{
treeView.SelectedNode = treeView.SelectedNode.Parent;
}
catch (Exception x)
{
ErrorBox(x);
}
}
else
{
int indexPreviousCellofSameColor = style.IndexOf(fontSize);
//Select TN parent
for (int j = 1; j <= (style.Count - indexPreviousCellofSameFont); j++)
{ treeView.SelectedNode = treeView.SelectedNode.Parent; }
style.RemoveRange(indexPreviousCellofSameFont + 1, style.Count - indexPreviousCellofSameFont - 1);
}
if (selection.Cells[i].Value2 == null)
{
//if empty cell, do something ... or nothing
treeView.SelectedNode = treeView.SelectedNode.LastNode;
}
else
{
//Add new TN to parent - TN object corresponds to excel cell
tn = new TreeNode()
{
Text = selection.Cells[i].Value2,
Tag = selection.Cells[i],
};
treeView.SelectedNode.Nodes.Add(tn);
tn.ToolTipText = tn.Level.ToString();
//selected TN => created TN
treeView.SelectedNode = tn;
}
}
}
그것은 전적으로 당신이 다른 것도 노드를 추가되지 방법에 따라 달라집니다 ... 더 검사 offcourse 당신의 움직이지 노드가 망각 있는지 확인해야합니다. –
@HansPassant는 노드를 만드는 방법에 대한 코드를 추가하길 원하십니까? 솔직히, 노드 이동이 왼쪽이나 오른쪽으로 어떻게 영향을 미칠지는 알 수 없습니다. –
문제가 생기지 않습니다. Treeview에 노드를 추가 할 때 부모 노드를 매개 변수로 입력해야합니다. 예를 들어 Child1이됩니다. 그러면 발생한 문제는 무엇입니까? – GuidoG