c# - ListView 中的多行文本

标签 c# winforms listview

我尝试制作一个包含 ListView 作为详细信息的 winform (ListView1.View = "Details") 这个 ListView 有 2 个 SubItems,我需要包装 String 并将其放入 SubItem。

我不能使用由其他人创建的任何组件或用户控件,例如 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 任何东西都不会像下图那样改变 enter image description here

有人知道吗? 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" });
}

结果:

enter image description here

关于c# - ListView 中的多行文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22103749/

相关文章:

c# - 按文本而不是值对 Datagridview 的列进行排序

c# - 从 C# 中的 .NET SecureString 读取单个字符?

C# - 从 C# WinForm 应用程序运行/执行 "Excel to CSV File Converter"控制台应用程序

c# - 设置连接设置的最佳方法

安卓 : drop down a list of items without a spinner

android - ListView 为空时显示空 View

c# - EF6 和多种配置(SQL Server 和 SQL Server Compact)

c# - 通过 C# 将消息放入 Websphere MQ 与手动放置相同的消息具有不同的数据长度

c# - 将 DataGrid View 转换为 DataSet/DataTable 的最佳方法

java - ListView - 其 View 在滚动期间失去值(value)