Текст переноса WinForm, если текущая ширина строки заполнена - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть DataGridView внутри моей WinForm. Я установил AutoSizeColumnsMode на Fill, потому что мне не нужно пробелов, если пользователь изменяет размеры окна.

Чего я хочу достичь. Например, пользователь вводит некоторый текст в определенной ячейке. Когда ширина текста становится шириной ячейки, текст должен идти на одну новую строку.
Как это может быть:

|Cell Header|
-------------
|text-text  |

и

|Cell Header|
-------------
|text-text  |
|more text  |
|on the new |
|line       |

Мои столбцы могут быть изменены пользователем. Итак, это:

|Cell Header|
-------------
|text-text  |
|more text  |
|on the new |
|line       |

может пойти так:

|Cell Header        |
---------------------
|text-text more text|
|on the new line    |

То, что я пробовал из других ответов SO:

  • установить AutoResizeRowsMode на AllCells - не помогло
  • установить DefaultCellStyle.WrapMode на True - не поможет

Как мне на самом деле этого добиться?

Редактировать: настройки столбца:

enter image description here

Правка № 2:

enter image description here enter image description here

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

В дополнение к настройке режима обтекания и автоматического режима размера для столбца, вам также необходимо установить режим размера для строк.

public class Model
{
    public int Id { get; set; }
    public string Text { get; set; }
}
private void Form1_Load(object sender, EventArgs e)
{
    var list = new List<Model>
    {
        new Model{Id = 1, Text = "Lorem ipsum" },
        new Model{Id = 2, Text = "Lorem ipsum dolor sit amet." },
        new Model{Id = 3, Text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit." },
    };
    dataGridView1.DataSource = list;
    dataGridView1.Columns["Text"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
    dataGridView1.Columns["Text"].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
    dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
}

enter image description here

0 голосов
/ 01 сентября 2018

Набор RowsDefaultCellStyle.Wrapmode = true вместо DefaultCellStyle.WrapMode = true

enter image description here

Я использовал настройки по умолчанию для обеих сеток. Это мои настройки:

enter image description here

Это код

enter image description here

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