0

我正在使用 TreeView 和 ListView 填充自制的Windows 资源管理器;我目前正在创建新文件夹。我想要做的是当我按下“新建文件夹”按钮时,将添加一个名为“新建文件夹”的新 listView 项目。之后,让用户使用 BeginEdit() 方法输入文件夹的名称。

private void buttonNewFolder_Click(object sender, EventArgs e)
        {
            ListViewItem newFolder = listView1.Items.Add("New folder", 1);
            newFolder.BeginEdit();
        }


private void listView1_AfterLabelEdit(object sender, LabelEditEventArgs e)
        {
            Directory.CreateDirectory("C:\"+e.Label); //for example
            // Now how can I change some properties of the "newFolder" listView Item in the above methods (buttonNewFolder_Click) ?
        }

listView1_AfterLabelEdit方法中,我使用Directory.CreateDirectory("C:\"+e.Label);语句创建一个新文件夹。但现在,我想更改上述“newFolder”ListViewItem 的一些属性(例如 Tag、ToolTipItem .. - 用于其他用途)。如何在buttonNewFolder_Click方法中与该 ListView 项进行交互???真的真的很希望你们能帮忙!非常感谢先进!

4

1 回答 1

0

newFolder只生活在范围内buttonNewFolder_Click。从字面上将其移出方法以使其更“全局”可访问:

ListViewItem newFolder;

private void buttonNewFolder_Click(object sender, EventArgs e)
        {
            newFolder = listView1.Items.Add("New folder", 1);
            newFolder.BeginEdit();
        }


private void listView1_AfterLabelEdit(object sender, LabelEditEventArgs e)
        {
            Directory.CreateDirectory("C:\"+e.Label); //for example
            //You now have access to newFolder here
        }

重要提示:(取决于这些事件被触发/方法被调用的顺序)newFolder 可能为空,这是一个真正的可能性。进行必要的检查,在任何一种方法中访问 newFolder 时都尽可能防御性地编写代码,因为现在可以在整个代码中的更多点访问它。

于 2013-10-14T09:21:18.650 回答