C#ListView显示

伙计们,我是c#中实现ListView的初学者。 我在c#.net中遇到了这些代码的问题。 我无法弄清楚输出显示的控件中发生了什么。 我似乎忘记了在ListView Control的属性中给出值的东西。

第二列值必须出现在第一列上。

在此处输入图像描述

这是我的代码:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.OleDb; namespace Database2 { public partial class Form1 : Form { OleDbConnection con; OleDbDataAdapter adapter; DataTable table; string conString = "Provider = Microsoft.Jet.OLEDB.4.0.; Data Source=DatabaseTest.mdb"; string sqlQuery = "SELECT * FROM Person"; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e){ con = new OleDbConnection(conString); adapter = new OleDbDataAdapter(sqlQuery,conString); table = new DataTable(); InitializeList(); adapter.Fill(table); for (int i = 0; i < table.Columns.Count; i++) lstDisplay.Columns.Add(table.Columns[i].ColumnName.ToString(), lstDisplay.Width / 6-1); for (int i = 0; i < table.Rows.Count; i++) { ListViewItem row = new ListViewItem(); for (int j = 0; j < table.Columns.Count; j++) row.SubItems.Add(table.Rows[i][j].ToString()); lstDisplay.Items.Add(row); } } private void InitializeList() { lstDisplay.GridLines = true; lstDisplay.AllowColumnReorder = true; lstDisplay.LabelEdit = true; lstDisplay.FullRowSelect = true; lstDisplay.Sorting = SortOrder.Ascending; lstDisplay.View = View.Details; } } } 

有没有listView属性我忘了给一个值?

ListViewItem本身代表第一列。 后续列由ListViewSubItem表示。

例如:

 for (int i = 0; i < table.Rows.Count; i++) { ListViewItem row = new ListViewItem(table.Rows[i][0].ToString()); for (int j = 1; j < table.Columns.Count; j++) row.SubItems.Add(table.Rows[i][j].ToString()); lstDisplay.Items.Add(row); } 

来自MSDN :

ListView控件显示由ListViewItem类定义的项列表。 每个ListViewItem都可以存储由ListViewItem.ListViewSubItem类定义的子项目对象。

ListView.Items表示第一列, ListViewItem.SubItems表示每行的子项。 所以你的代码应该是这样的:

 for (int i = 0; i < table.Rows.Count; i++) { ListViewItem row = new ListViewItem(table.Rows[i][0].ToString()); for (int j = 1; j < table.Columns.Count; j++) { row.SubItems.Add(table.Rows[i][j].ToString()); } lstDisplay.Items.Add(row); }