【问题标题】:Multiline Text In List View列表视图中的多行文本
【发布时间】:2014-02-28 19:06:09
【问题描述】:

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

我不能使用其他 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。

【问题讨论】:

  • 我不明白。您能否添加一张您正在尝试实现的图片或发布相关代码。

标签: c# winforms listview


【解决方案1】:

考虑改用 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" });
}

结果:

【讨论】:

    【解决方案2】:

    你可以实现这样的东西

    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);
    

    【讨论】:

      【解决方案3】:

      您可以使用“\n”字符换行到列表项文本的下一行,例如:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多