如何从方法 listBox1_MouseClick C# 中获取对象列表

How to get object list from method listBox1_MouseClick C#

当我单击 listbox1 中的项目时,我想用列表对象填充 listbox2

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_MouseClick 中使用 object_TypeDocs 是否可以向 [=16 添加一个新参数=]?

保留对 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)
    {

    }
}