[英]C# Populate list view from another class
我在 MainForm 中有一个列表视图,但我想将代码传递给另一个名为 MaintenanceClass 的 class
这是 MainForm 中的代码,用于将数据从文本文件加载到列表视图中。
List<string> data = File.ReadAllLines(Application.StartupPath + "\\Maintenance\\" + "\\ReportFieldList\\" + "File.txt").ToList();
foreach (string d in data)
{
string[] items = d.Split(':').Select(a => a.Trim()).ToArray();
lvFieldList.Items.Add(new ListViewItem(items));
}
这是 MaintenanceClass 上的方法及其给出的错误,即 lvFieldList 不存在。 lvFieldList 在 MainForm 上定义
如何使用另一个名为 MaintenanceClass 的 class 中的方法填充 MainForm 中的列表视图?
Listview 项目具有 Text 和 SubItems,您需要将数组的第一个元素加入到 listview 项目的 Text 值中,并且 rest 将作为 SubItems 添加
foreach(string d in data)
{
string[] items = d.Split(':').Select(a => a.Trim()).ToArray();
ListViewItem item = new ListViewItem();
item.Text=items[0];
for(int i=1;i<items.Count;i++)
{
item.SubItems.Add(items[i]);
}
lvFieldList.Items.Add(item);
}
您不应在读取文件的方法中向 ListView 执行添加项目。
以下是一条路径的最低要求。
使用如下所示的事件。
public class FileOperations
{
public delegate void ProcessLine(string[] sender);
public event ProcessLine ProcessLineEvent;
public void ReadFile(string fileName)
{
var lines = File.ReadAllLines(fileName);
foreach (var line in lines)
{
ProcessLineEvent?.Invoke(line.Split(','));
}
}
}
在表单中调用方法
var operations = new FileOperations();
operations.ProcessLineEvent += OnProcessLine;
operations.ReadFile("TODO");
在此事件中添加项目
private static void OnProcessLine(string[] sender)
{
// add item
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.