The standard ListView column does not wrap its text.
You can make it work with some programming though, and what quickly comes to mind are two approaches, both having in common to use Control type column, but for different purposes.
Use a dummy invisible control type column and set its PreferedHeight according to your logic, which will force the height of the ListView item to be of that height as a minimun, and then use your own function to wrap the text and add linebreaks.
Use a control type column with a TextBox contained in it, which should wrap the text for you.
For Method 1, I generated the following test code:
public partial class Form1 : Form
private void Form1_Load(object sender, EventArgs e)
this.listView1.DataSource = BuildDataTable();
ColumnHeader ch = new ColumnHeader();
ch.Type = ListViewColumnType.Control;
ch.PreferedItemHeight = 70;
ch.Visible = false;
private DataTable BuildDataTable()
DataTable DT = new DataTable();
for (int i = 0; i < 5; i++)
DT.Rows.Add(i.ToString(), RandomString(i, true), RandomString(i, false));
private string RandomString(int i, bool blnAddNewLine)
string s = string.Empty;
for (int j = 0; j <= i; j++)
s += "somewords" + (blnAddNewLine ? Environment.NewLine : " ");
Hope thsi helps,