2017-04-18 173 views
0

當我點擊listbox1中的項目時,我想用列表對象填充listbox2如何從方法列表中獲取對象列表listBox1_MouseClick C#

private void Form1_Load(object sender, EventArgs e) 
{ 
    List<TypeDocClass> object_TypeDocs = SearchAndPopulateTiers(@"C:\TestLoadFiles", "NUM_CLIENT",sender);  
    this.listBox1.MouseClick += new MouseEventHandler(listBox1_MouseClick);  
}  

List<TypeDocClass> SearchAndPopulateTiers(string path, string searchText, object sender) 
{ 
    DirectoryInfo di = new DirectoryInfo(path); 
    FileInfo[] files = di.GetFiles("FAC*.txt"); 
    var typeDocs = new List<TypeDocClass>(); 
    foreach (FileInfo file in files) 
    { 
     string[] content = File.ReadAllLines(file.FullName); 
     if (content.Any(line => line.ToLower().Contains(searchText.ToLower()))) 
     { 
      var numTiers = content.Select(y => y.Split('=')) 
       .Where(y => y.Length > 1 && y[0].Trim() == "NUM_CLIENT") 
       .Select(y => y[1]) 
       .FirstOrDefault(); 

      var nomTiers = content.Select(y => y.Split('=')) 
       .Where(y => y.Length > 1 && y[0].Trim() == "NOM_CLIENT") 
       .Select(y => y[1]) 
       .FirstOrDefault(); 

      var numFacture = content.Select(y => y.Split('=')) 
       .Where(y => y.Length > 1 && y[0].Trim() == "NUM_FACTURE") 
       .Select(y => y[1]) 
       .FirstOrDefault(); 

      if (numTiers != null) 
      { 
       if ((listBox1.Items.Contains(numTiers) == false)) 
       { 
        listBox1.Items.Add(new TiersClass 
        { 
         TiersName = nomTiers, 
         TiersId = numTiers 
        });  

        typeDocs.Add(new TypeDocClass { Num_Facture = numFacture, TiersId= numTiers }); 
       } 
      } 
      else 
      { 
       string text = "My text that I want to display"; 
       MessageBox.Show(text);  
      } 
     } 
    } 
    return typeDocs; 
} 

void listBox1_MouseClick(object sender, MouseEventArgs e) 
{ 
    int index = this.listBox1.IndexFromPoint(e.Location); 
    if (index != System.Windows.Forms.ListBox.NoMatches) 
    { 
     listBox2.DataSource = ""; //object_TypeDocs 
    }  
} 

所以,我不知道怎麼去從另一個方法對象名單,我想用在listBox1_MouseClickobject_TypeDocs是否有可能一個新的參數添加到void listBox1_MouseClick(object sender, MouseEventArgs e)

回答

2

保留對object_TypeDocs的引用並在表單加載時對其進行初始化。然後訪問它的鼠標點擊

private List<TypeDocClass> object_TypeDocs = new List<TypeDocClass>(); 
private void Form1_Load(object sender, EventArgs e) 
{ 
    object_TypeDocs = SearchAndPopulateTiers(@"C:\TestLoadFiles", "NUM_CLIENT",sender); 

    this.listBox1.MouseClick += new MouseEventHandler(listBox1_MouseClick); 

} 

void listBox1_MouseClick(object sender, MouseEventArgs e) 
{ 
    if(object_TypeDocs != null) 
    { 

    } 
} 
+0

Visual Studio的通知'object_TypeDocs'沒有分配,所以'object_TypDocs'是listBox1_MousClick() – Bissap

+0

@Bissap空 - 請參閱更新 –