WinForms ListView: как указать ширину ListViewItem, когда есть столбцы, но в режиме отображения View.List? - PullRequest
1 голос
/ 07 декабря 2010

У меня есть System.Windows.Forms.ListView элемент управления, который я использовал с View = View.List.Элементы ListViewItems, которые я добавлял, не имели никаких подпунктов, только текст и значок.Это работало нормально.Но я хотел позволить пользователю изменить представление на View.Details во время выполнения.Поэтому я добавил столбцы в элемент управления ListView, подэлементы в ListViewItems и кнопку, чтобы позволить пользователю изменить представление.Подробный вид выглядит хорошо, но в режиме списка текст ListViewItems усекается только до первой буквы и имеет эллипсы.Например, если текст ListViewItem - «stackoverflow», он отображается как «s ...».И пользователь не может изменить размер элемента.Как сделать так, чтобы в режиме View.List текст ListViewItems отображался так же, как и до добавления столбцов и подэлементов в ListViewItems?

Ответы [ 3 ]

3 голосов
/ 07 декабря 2010

Я вижу это.Увеличьте столбец, чтобы увидеть эффект, который он имеет.Родной элемент управления 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;
        }
    }
0 голосов
/ 20 мая 2016

Мы возьмем пример ListView с 2 столбцами и изменим размер содержимого, а затем до минимальной ширины.

// 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];
    }
}
0 голосов
/ 07 декабря 2010

Невозможно воспроизвести вашу проблему, я думаю, вам нужно дважды проверить ListViewItem, который вы создали и добавили в Listview.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...