如果填充当前行宽,WinForm会自动换行

时间:2018-09-01 08:34:00

标签: c# .net winforms datagridview

我的WinForm中有DataGridView。我将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    |

我从其他方法得到的答案:

  • AutoResizeRowsMode设置为AllCells-没有帮助
  • DefaultCellStyle.WrapMode设置为True-对您没有帮助

我该如何实现呢?

编辑:列设置:

enter image description here

编辑#2:

enter image description here enter image description here

2 个答案:

答案 0 :(得分:2)

设置RowsDefaultCellStyle.Wrapmode = true而不是DefaultCellStyle.WrapMode = true

enter image description here

我为两个网格都使用了默认设置。这是我的设置:

enter image description here

这是代码

enter image description here

答案 1 :(得分:1)

除了为列设置换行模式和自动调整大小模式外,还需要为行设置调整大小模式。

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