ListView控件 - 插入项目(ListView - Inserting Items)

2019-09-23 02:14发布

我以前从未使用过的ListView控件,我试图以编程方式插入在运行时项目。

我有一个名为列标题。 一旦用户选择了从的FolderBrowserDialog的路径。 我需要能够抓住SelectedPath内的所有文件的名称,并添加文件的名称为标题栏里面的物品。 任何人都可以帮我做到这一点?

谢谢

Answer 1:

我认为,这样做的最好方法是使用FileInfo的作为,而不是获取文件路径,就像串。 这样一来,如果需要,可以在ListView显示有关该文件的详细信息(例如说你设定的查看到详细的,那么你可以添加组进行的FileInfo(大小等))。

你会通过添加组列表视图,然后添加具有子项目的项目做到这一点:

DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\myDir");

FileInfo[] files = directoryInfo.GetFiles();

foreach(FileInfo fileInfo in files)
  {
  ListViewItem newItem = new ListViewItem();
  newItem.Text = fileInfo.Name;
  newItem.SubItems.Add(fileInfo.Length); //Must have a group added to the ListView (called File Size in this example)
  listView1.Items.Add(newItem);
  }

很明显,你不必使用组和子项,这仍然会正常工作没有他们(只是删除子项部分)。



Answer 2:

试试这个代码:

string[] filePaths = Directory.GetFiles("c:\\MyDir\\");

foreach (string str in filePaths)
{
    ListViewItem lvi = new ListViewItem(str);
    ListView1.Items.Add(lvi)
}


Answer 3:

您是否使用View.Details模式? 这听起来像它,因为你提到的列。 如果是这样,它看起来就像这样:

string[] files = Directory.GetFiles(folderBrowser.SelectedPath);

foreach (string path in paths) {
    ListViewItem row = new ListViewItem();
    row.SubItems.Add(path);
    YourListView.Items.Add(row);
}
  • Directory.GetFiles
  • 例如用于ListView


Answer 4:

你们中的一个有选择使用绑定的数据网格。 然而,这取决于要处理的数据量。

这是怎么做:

在您的视图中创建一个DataGrid与“标题”列,然后在特定的列绑定到数据字段(也称谓)。

当加载在DataGrid然后你可以创建一个填充文件名称列“标题”一个新的DataTable。


DataTable datatable = new DataTable();
DataColumn titleCol = new DataColumn("title", Type.GetType("System.String"));
datatable.Columns.Add(titleCol);
foreach(name in names)
{
   DataRow newRow = new DataRow();
   newRow["title"] = name;
   /*
    * Add the rows you want into your data table
    */

   datatable.Rows.Add(newRow);
}

然后渲染你的DataGrid,当你只是简单地说:


dagagrid.DataSource = datatable;
datagrid.DataBind();

这将这样的伎俩。 但是,如果这个解决方案会更有意义与您的数据网格有一个以上的简单列。



Answer 5:

如果你刚刚开始接触.NET ListView控件,您可以用自己节省很多的麻烦ObjectListView (约.NET的WinForms ListView的一个开放源代码包装)。 它解决了大部分的你要遇到的问题和挫折。

最平凡,它会自动处理,当你点击标题,你必须写自己在一个标准的ListView东西排序行。



Answer 6:

int i = 0;

//i = LVPurchase.Items.Count + 1;  
LVPurchase.Items.Add(cmbService.SelectedValue.ToString(), i);

LVPurchase.Items[LVPurchase.Items.Count - 1].SubItems.Add(cmbService.Text);
LVPurchase.Items[LVPurchase.Items.Count - 1].SubItems.Add(cmbItem.SelectedValue.ToString());
LVPurchase.Items[LVPurchase.Items.Count - 1].SubItems.Add(cmbItem.Text);
LVPurchase.Items[LVPurchase.Items.Count - 1].SubItems.Add(txtPurchaseQty.Text);
LVPurchase.Items[LVPurchase.Items.Count - 1].SubItems.Add(txtUnitCostUSD.Text);
LVPurchase.Items[LVPurchase.Items.Count - 1].SubItems.Add(txtConvRate.Text);
LVPurchase.Items[LVPurchase.Items.Count - 1].SubItems.Add(txtUnitCostBDT.Text);
SubTotUSD = Convert.ToDouble(txtPurchaseQty.Text) * Convert.ToDouble(txtUnitCostUSD.Text);
txtSubTotUSD.Text = SubTotUSD.ToString();
SubTotBDT = Convert.ToDouble(txtPurchaseQty.Text) * Convert.ToDouble(txtUnitCostBDT.Text);
txtSubTotBDT.Text = SubTotBDT.ToString();
LVPurchase.Items[LVPurchase.Items.Count - 1].SubItems.Add(txtSubTotUSD.Text);
LVPurchase.Items[LVPurchase.Items.Count - 1].SubItems.Add(txtSubTotBDT.Text);

LVPurchase.Items[LVPurchase.Items.Count - 1].SubItems.Add(txtBatch.Text);
LVPurchase.Items[LVPurchase.Items.Count - 1].SubItems.Add(dtpExpiryDate.Value.ToString());

TotalUSD = TotalUSD + SubTotUSD;
txtTotalUSD.Text = TotalUSD.ToString();
TotalBDT = TotalBDT + SubTotBDT;
txtTotalBDT.Text = TotalBDT.ToString();


文章来源: ListView - Inserting Items