我对System.Windows.Forms.ListView
使用的View = View.List
控件。我添加的ListViewItems没有任何子项,只有文本和图标。这很好。但是我希望允许用户在运行时将View更改为View.Details
。所以我在ListView控件中添加了列,在ListViewItems中添加了子项,并允许用户更改View。详细信息视图看起来很好,但在列表模式下,ListViewItems的文本被截断为仅第一个字母并具有省略号。例如,如果ListViewItem的文本是“stackoverflow”,则它显示为“s ...”。并且用户无法调整项目的大小。我怎样才能使它在View.List模式下,ListViewItems的文本看起来像我在将列和子项添加到ListViewItems之前所做的那样?
答案 0 :(得分:3)
我明白了。使列更宽,以查看它具有的效果。即使它处于列表模式,看到标题控件被创建,本机Windows控件也会被混淆。在使列更宽的情况下,唯一真正的解决方法是在切换回View = List之前删除列。我建议采用后一种方法,即标题控制可能会产生一些额外的副作用。
private void button1_Click(object sender, EventArgs e) {
if (listView1.View == View.List) {
listView1.View = View.Details;
listView1.Columns.Add(new ColumnHeader());
}
else {
listView1.Columns.Clear();
listView1.View = View.List;
}
}
答案 1 :(得分:0)
无法重现您的问题,我猜您需要仔细检查您创建的ListViewItem
并添加到Listview
。
答案 2 :(得分:0)
我们举一个带有2列的ListView示例并调整内容大小 然后到最小宽度。
// Auto resize of ListView Columns to minimum width
private int[] ColumnsWidth = { 35, 322 };
/// <summary>
/// Resize the columns based on the items entered
/// </summary>
private void ResizeColumns()
{
// Auto Resize Columns based on content
m_urlsListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
// Make sure to resize to minimum width
if (m_urlsListView.Columns[0].Width < ColumnsWidth[0])
{
m_urlsListView.Columns[0].Width = ColumnsWidth[0];
}
if (m_urlsListView.Columns[1].Width < ColumnsWidth[1])
{
m_urlsListView.Columns[1].Width = ColumnsWidth[1];
}
}