列表视图中的多行文本

我尝试使winform包含ListView作为详细信息(ListView1.View =“Details”)这个ListView有2个SubItems,我需要Wrap String并将它放到SubItem。

我不能使用由其他Like TableXP创建的任何组件或用户控件或…

我使用此代码:

lstShares.Columns.Add("Share Name",100); lstShares.Columns.Add("Path",300); lstShares.View = View.Details; ManagementObjectSearcher shares = new ManagementObjectSearcher("Select * from Win32_Share"); foreach (ManagementObject share in shares.Get()) { lstShares.Items.Add(new ListViewItem(new String[] { share["Name"].ToString(), share["Path"].ToString() + "\n" + "AAAA" })); } 

如果我使用“\ n”或Environment.NewLine,则不会像下面的图片那样改变 在此处输入图像描述

有人有想法吗? TNX。

请考虑使用DataGridView控件。 它支持包装:

 dgv.AutoGenerateColumns = false; dgv.RowHeadersVisible = false; dgv.MultiSelect = false; dgv.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dgv.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; dgv.DefaultCellStyle.WrapMode = DataGridViewTriState.True; dgv.Columns.Add(new DataGridViewTextBoxColumn() { HeaderText = "Share Name", ReadOnly = true, AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill, FillWeight = 25 }); dgv.Columns.Add(new DataGridViewTextBoxColumn() { HeaderText = "Path", ReadOnly = true, AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill, FillWeight = 75 }); var shares = new ManagementObjectSearcher("Select * from Win32_Share"); foreach (ManagementObject share in shares.Get()) { dgv.Rows.Add(new String[] { share["Name"].ToString(), share["Path"].ToString() + "\n" + "AAAA" }); } 

结果:

在此处输入图像描述

你可以实现这样的东西

 ListView lv = new ListView(); lv.Columns.Add("Header", 100); lv.Columns.Add("Details", 100); lv.Dock = DockStyle.Fill; lv.Items.Add(new ListViewItem(new string[] { "Sachin", "Some details" })); lv.Items.Add(new ListViewItem(new string[] { "Stats", "More details" })); lv.View = View.Details; Controls.Add(lv); 

您可以使用’\ n’字符包装到listitem文本中的下一行,例如:

 listView1.Items.Add("apples\noranges\nbananas"); listView1.Items.Add("kiwis\ngrapefruits\nwatermelons");