我会尽力做到这一点。我正在用C#Windows窗体开发一个软件,该软件在其中一个窗体上包含一个名为TreeView1的TreeView控件。 LabelEdit已启用,我正在使用它的AfterLabelEdit事件,因为许多人可能知道实际上并没有在标签被编辑之后发生。我正在尝试为节点重新命名。但是,我不仅在尝试获取该节点的字符串新标签。 (例如,通常使用e.Label),但是在编辑特定的节点标签后,我需要获取整个TreeView控件,因为它是我创建的方法的输入,该方法用于更新DataGridView内的值。 LabelEdit通过在ToolStripMenuItem click事件中使用BeginEdit()开始。这是简单的代码。
private void renameToolStripMenuItem_Click(object sender EventArgs e)
{
treeView1.SelectedNode.BeginEdit();
}
当我在BeginEdit()之后使用PopulateGirdView()时,直到下次单击此按钮时,datagridview中的值才会更新。
这是编辑节点标签后需要实现的方法
public void PopulateGrid_Nodes(TreeView treeView)
{
dataGridView1.Rows.Clear();
BuildRows(TreeView treeView);
CreateText(TreeView treeView);
count = 0;
}
public void BuildRows(TreeNodeCollection nodes)
{
foreach(TreeNode child in nodes)
{
DataGridViewCell cell = new DataGridViewTextBoxCell();
DataGridViewRow row = new DataGridViewRow();
row.Cells.Add(cell);
if(child.IsExpanded == true)
{
BuildRows(child.Nodes);
}
}
}
int count = 0;
private void CreateText(TreeNodeCollection nodes)
{
foreach(TreeNode child in nodes)
{
dataGridView1.Rows[count].Cells[0].Value = child.Text.ToString();
dataGridView1.RefreshEdit();
count = count + 1;
if(child.IsExpanded == true)
{
BuildRows(child.Nodes);
}
}
}
我也尝试过在BeginEdit之后使用我的方法,但这也不起作用。