2013-10-14 30 views
0

我正在填充自制的使用TreeView的Windows資源管理器& ListView;我目前正在創建新文件夾。我想要做的是,當我按下「新建文件夾」按鈕時,將添加一個新的listView項目,名稱爲「新建文件夾」。之後,讓用戶使用BeginEdit()方法輸入文件夾的名稱。c# - 如何在另一種方法與對象交互?

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的一些屬性(例如標籤,ToolTipItem .. - 用於另一種用途)。如何與buttonNewFolder_Click方法中的ListView項目交互? 真的很希望你們能幫忙!非常感謝sooo先進!

回答

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可以爲null這是一個真正的possibiliy 。進行必要的檢查時,在使用任一方法訪問newFolder時儘可能防守,現在可以在整個代碼中的更多點上訪問它。

相關問題