c# - 如何在另一种方法中与对象交互?

时间:2013-10-14 09:19:18

标签: c# listview label edit listviewitem

我正在使用TreeView&amp ;;填充一个自制的 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项进行交互? 真的希望你们能帮忙!非常感谢先进!

1 个答案:

答案 0 :(得分: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
        }

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