WindowsフォームのTreeViewでレベルを追加または削除することが可能かどうか疑問に思っていましたか?TreeNodeへのレベルの追加または削除
例えば:
ParentNode
| Child1
| | Child1.1
はAA Node.Level
あります:ボタンをユーザーがクリックすると、それはなりCHILD2するレベルを追加する場合
ParentNode
| Child1
| Child2
: 私のツリービューには、そもそもこのようなものですレベルを取得して設定しない場合にのみ使用できます。
編集:
ノードは自動的に作成され、レベルはExcelセルのスタイルに応じて割り当てられます。問題は、作成されたノードが正しい場所にないということです。これは、Excelファイルがうまく作成されていないためです。直接 2 -
は、私は、ノードの選択にMove Left
Move Right
ボタンを作成
1 - ユーザーはExcelのファイルを変更します。だから私はこの問題を解決するには、O 2つのオプションを参照してください。
私は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;
}
}
}
それは完全にあなたは何も、ノードを追加しない方法によって異なります。 –
@HansPassantは、ノードを構築する方法のコードを追加したいですか?正直なところ、私はそれがノードを左右に動かすのにどのように影響するかは分かりません。 –
私は問題を起こさない。ツリービューにノードを追加するときは、パラメータとして親ノードを入力する必要があります。この例ではChild1になります。 – GuidoG